Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
d5f25204
Commit
d5f25204
authored
Jan 03, 2011
by
Vicent Marti
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'repo-init' of
https://github.com/nulltoken/libgit2
into nulltoken-repo-init
parents
e0646b38
951d06e4
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
22 deletions
+50
-22
src/fileops.c
+40
-14
src/repository.c
+10
-8
No files found.
src/fileops.c
View file @
d5f25204
#include "common.h"
#include "fileops.h"
#include <ctype.h>
int
gitfo_open
(
const
char
*
path
,
int
flags
)
{
...
...
@@ -311,6 +312,19 @@ int gitfo_dirent(
return
GIT_SUCCESS
;
}
#ifdef GIT_WIN32
static
int
is_windows_rooted_path
(
const
char
*
path
)
{
/* Does the root of the path look like a windows drive ? */
if
(
isalpha
(
path
[
0
])
&&
(
path
[
1
]
==
':'
))
return
GIT_SUCCESS
;
return
GIT_ERROR
;
}
#endif
int
gitfo_mkdir_recurs
(
const
char
*
path
,
int
mode
)
{
int
error
;
...
...
@@ -320,23 +334,35 @@ int gitfo_mkdir_recurs(const char *path, int mode)
if
(
path_copy
==
NULL
)
return
GIT_ENOMEM
;
error
=
GIT_SUCCESS
;
pp
=
path_copy
;
error
=
GIT_SUCCESS
;
pp
=
path_copy
;
while
(
error
==
0
&&
(
sp
=
strchr
(
pp
,
'/'
))
!=
0
)
{
if
(
sp
!=
pp
&&
gitfo_isdir
(
path_copy
)
<
GIT_SUCCESS
)
{
*
sp
=
0
;
error
=
gitfo_mkdir
(
path_copy
,
mode
);
*
sp
=
'/'
;
}
#ifdef GIT_WIN32
pp
=
sp
+
1
;
}
if
(
!
is_windows_rooted_path
(
pp
))
pp
+=
2
;
/* Skip the drive name (eg. C: or D:) */
#endif
while
(
error
==
GIT_SUCCESS
&&
(
sp
=
strchr
(
pp
,
'/'
))
!=
0
)
{
if
(
sp
!=
pp
&&
gitfo_isdir
(
path_copy
)
<
GIT_SUCCESS
)
{
*
sp
=
0
;
error
=
gitfo_mkdir
(
path_copy
,
mode
);
/* Do not choke while trying to recreate an existing directory */
if
(
errno
==
EEXIST
)
error
=
GIT_SUCCESS
;
*
sp
=
'/'
;
}
pp
=
sp
+
1
;
}
if
(
*
(
pp
-
1
)
!=
'/'
&&
error
==
GIT_SUCCESS
)
error
=
gitfo_mkdir
(
path
,
mode
);
if
(
*
(
pp
-
1
)
!=
'/'
&&
error
==
GIT_SUCCESS
)
error
=
gitfo_mkdir
(
path
,
mode
);
free
(
path_copy
);
return
error
;
free
(
path_copy
);
return
error
;
}
src/repository.c
View file @
d5f25204
...
...
@@ -35,9 +35,11 @@
#define GIT_DIR "/.git/"
#define GIT_OBJECTS_DIR "objects/"
#define GIT_OBJECTS_INFO_DIR GIT_OBJECTS_DIR "info/"
#define GIT_OBJECTS_PACK_DIR GIT_OBJECTS_DIR "pack/"
#define GIT_REFS_DIR "refs/"
#define GIT_REFS_HEADS_DIR
"refs/
heads/"
#define GIT_REFS_TAGS_DIR
"refs/
tags/"
#define GIT_REFS_HEADS_DIR
GIT_REFS_DIR "
heads/"
#define GIT_REFS_TAGS_DIR
GIT_REFS_DIR "
tags/"
#define GIT_INDEX_FILE "index"
#define GIT_HEAD_FILE "HEAD"
...
...
@@ -786,19 +788,19 @@ int repo_init_structure(repo_init *results)
if
(
repo_init_createhead
(
temp_path
)
<
GIT_SUCCESS
)
return
GIT_ERROR
;
/* Creates the '/objects/' directory */
strcpy
(
temp_path
+
path_len
,
GIT_OBJECTS_DIR
);
if
(
gitfo_mkdir
(
temp_path
,
mode
))
/* Creates the '/objects/
info/
' directory */
strcpy
(
temp_path
+
path_len
,
GIT_OBJECTS_
INFO_
DIR
);
if
(
gitfo_mkdir
_recurs
(
temp_path
,
mode
))
return
GIT_ERROR
;
/* Creates the '/
refs
/' directory */
strcpy
(
temp_path
+
path_len
,
GIT_
REFS
_DIR
);
/* Creates the '/
objects/pack
/' directory */
strcpy
(
temp_path
+
path_len
,
GIT_
OBJECTS_PACK
_DIR
);
if
(
gitfo_mkdir
(
temp_path
,
mode
))
return
GIT_ERROR
;
/* Creates the '/refs/heads/' directory */
strcpy
(
temp_path
+
path_len
,
GIT_REFS_HEADS_DIR
);
if
(
gitfo_mkdir
(
temp_path
,
mode
))
if
(
gitfo_mkdir
_recurs
(
temp_path
,
mode
))
return
GIT_ERROR
;
/* Creates the '/refs/tags/' directory */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment