mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-01 22:25:34 +00:00
filemode: deploy enum usage
This commit is contained in:
parent
d854d59e31
commit
a7dbac0b23
@ -271,7 +271,7 @@ GIT_EXTERN(const git_tree_entry *) git_treebuilder_get(git_treebuilder *bld, con
|
||||
* @param bld Tree builder
|
||||
* @param filename Filename of the entry
|
||||
* @param id SHA1 oid of the entry
|
||||
* @param attributes Folder attributes of the entry. This parameter must
|
||||
* @param filemode Folder attributes of the entry. This parameter must
|
||||
* be valued with one of the following entries: 0040000, 0100644,
|
||||
* 0100755, 0120000 or 0160000.
|
||||
* @return 0 or an error code
|
||||
@ -281,7 +281,7 @@ GIT_EXTERN(int) git_treebuilder_insert(
|
||||
git_treebuilder *bld,
|
||||
const char *filename,
|
||||
const git_oid *id,
|
||||
unsigned int attributes);
|
||||
git_filemode_t filemode);
|
||||
|
||||
/**
|
||||
* Remove an entry from the builder by its filename
|
||||
|
10
src/notes.c
10
src/notes.c
@ -180,7 +180,7 @@ static int manipulate_note_in_tree_r(
|
||||
subtree_name[2] = '\0';
|
||||
|
||||
error = tree_write(out, repo, parent, git_tree_id(new),
|
||||
subtree_name, 0040000);
|
||||
subtree_name, GIT_FILEMODE_TREE);
|
||||
|
||||
|
||||
cleanup:
|
||||
@ -252,7 +252,13 @@ static int insert_note_in_tree_enotfound_cb(git_tree **out,
|
||||
GIT_UNUSED(current_error);
|
||||
|
||||
/* No existing fanout at this level, insert in place */
|
||||
return tree_write(out, repo, parent, note_oid, annotated_object_sha + fanout, 0100644);
|
||||
return tree_write(
|
||||
out,
|
||||
repo,
|
||||
parent,
|
||||
note_oid,
|
||||
annotated_object_sha + fanout,
|
||||
GIT_FILEMODE_BLOB);
|
||||
}
|
||||
|
||||
static int note_write(git_oid *out,
|
||||
|
42
src/tree.c
42
src/tree.c
@ -14,14 +14,14 @@
|
||||
#define DEFAULT_TREE_SIZE 16
|
||||
#define MAX_FILEMODE_BYTES 6
|
||||
|
||||
static bool valid_attributes(const int attributes)
|
||||
static bool valid_filemode(const int filemode)
|
||||
{
|
||||
return (attributes == 0040000 /* Directory */
|
||||
|| attributes == 0100644 /* Non executable file */
|
||||
|| attributes == 0100664 /* Non executable group writable file */
|
||||
|| attributes == 0100755 /* Executable file */
|
||||
|| attributes == 0120000 /* Symbolic link */
|
||||
|| attributes == 0160000); /* Git link */
|
||||
return (filemode == GIT_FILEMODE_TREE
|
||||
|| filemode == GIT_FILEMODE_BLOB
|
||||
|| filemode == GIT_FILEMODE_BLOB_GROUP_WRITABLE
|
||||
|| filemode == GIT_FILEMODE_BLOB_EXECUTABLE
|
||||
|| filemode == GIT_FILEMODE_LINK
|
||||
|| filemode == GIT_FILEMODE_COMMIT);
|
||||
}
|
||||
|
||||
static int valid_entry_name(const char *filename)
|
||||
@ -308,8 +308,8 @@ static int tree_parse_buffer(git_tree *tree, const char *buffer, const char *buf
|
||||
int attr;
|
||||
|
||||
if (git__strtol32(&attr, buffer, &buffer, 8) < 0 ||
|
||||
!buffer || !valid_attributes(attr))
|
||||
return tree_error("Failed to parse tree. Can't parse attributes");
|
||||
!buffer || !valid_filemode(attr))
|
||||
return tree_error("Failed to parse tree. Can't parse filemode");
|
||||
|
||||
if (*buffer++ != ' ')
|
||||
return tree_error("Failed to parse tree. Object is corrupted");
|
||||
@ -368,7 +368,7 @@ static int append_entry(
|
||||
git_treebuilder *bld,
|
||||
const char *filename,
|
||||
const git_oid *id,
|
||||
unsigned int attributes)
|
||||
git_filemode_t filemode)
|
||||
{
|
||||
git_tree_entry *entry;
|
||||
|
||||
@ -376,7 +376,7 @@ static int append_entry(
|
||||
GITERR_CHECK_ALLOC(entry);
|
||||
|
||||
git_oid_cpy(&entry->oid, id);
|
||||
entry->attr = attributes;
|
||||
entry->attr = (uint16_t)filemode;
|
||||
|
||||
if (git_vector_insert(&bld->entries, entry) < 0)
|
||||
return -1;
|
||||
@ -517,17 +517,17 @@ static void sort_entries(git_treebuilder *bld)
|
||||
git_vector_sort(&bld->entries);
|
||||
}
|
||||
|
||||
GIT_INLINE(int) normalize_attributes(const int attributes)
|
||||
GIT_INLINE(git_filemode_t) normalize_filemode(git_filemode_t filemode)
|
||||
{
|
||||
/* 100664 mode is an early design mistake. Tree entries may bear
|
||||
* this mode in some old git repositories, but it's now deprecated.
|
||||
* We silently normalize while inserting new entries in a tree
|
||||
* being built.
|
||||
*/
|
||||
if (attributes == 0100664)
|
||||
return 0100644;
|
||||
if (filemode == GIT_FILEMODE_BLOB_GROUP_WRITABLE)
|
||||
return GIT_FILEMODE_BLOB;
|
||||
|
||||
return attributes;
|
||||
return filemode;
|
||||
}
|
||||
|
||||
int git_treebuilder_create(git_treebuilder **builder_p, const git_tree *source)
|
||||
@ -553,7 +553,7 @@ int git_treebuilder_create(git_treebuilder **builder_p, const git_tree *source)
|
||||
if (append_entry(
|
||||
bld, entry_src->filename,
|
||||
&entry_src->oid,
|
||||
normalize_attributes(entry_src->attr)) < 0)
|
||||
normalize_filemode((git_filemode_t)entry_src->attr)) < 0)
|
||||
goto on_error;
|
||||
}
|
||||
}
|
||||
@ -571,17 +571,17 @@ int git_treebuilder_insert(
|
||||
git_treebuilder *bld,
|
||||
const char *filename,
|
||||
const git_oid *id,
|
||||
unsigned int attributes)
|
||||
git_filemode_t filemode)
|
||||
{
|
||||
git_tree_entry *entry;
|
||||
int pos;
|
||||
|
||||
assert(bld && id && filename);
|
||||
|
||||
if (!valid_attributes(attributes))
|
||||
return tree_error("Failed to insert entry. Invalid attributes");
|
||||
if (!valid_filemode(filemode))
|
||||
return tree_error("Failed to insert entry. Invalid filemode");
|
||||
|
||||
attributes = normalize_attributes(attributes);
|
||||
filemode = normalize_filemode(filemode);
|
||||
|
||||
if (!valid_entry_name(filename))
|
||||
return tree_error("Failed to insert entry. Invalid name for a tree entry");
|
||||
@ -598,7 +598,7 @@ int git_treebuilder_insert(
|
||||
}
|
||||
|
||||
git_oid_cpy(&entry->oid, id);
|
||||
entry->attr = attributes;
|
||||
entry->attr = filemode;
|
||||
|
||||
if (pos < 0) {
|
||||
if (git_vector_insert(&bld->entries, entry) < 0)
|
||||
|
@ -47,5 +47,9 @@ int git_tree__parse(git_tree *tree, git_odb_object *obj);
|
||||
*/
|
||||
int git_tree__prefix_position(git_tree *tree, const char *prefix);
|
||||
|
||||
/**
|
||||
* Obsolete mode kept for compatibility reasons
|
||||
*/
|
||||
#define GIT_FILEMODE_BLOB_GROUP_WRITABLE 0100664
|
||||
|
||||
#endif
|
||||
|
@ -100,40 +100,40 @@ void test_index_filemodes__untrusted(void)
|
||||
|
||||
/* 1 - add 0644 over existing 0644 -> expect 0644 */
|
||||
replace_file_with_mode("exec_off", "filemodes/exec_off.0", 0644);
|
||||
add_and_check_mode(index, "exec_off", 0100644);
|
||||
add_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* 2 - add 0644 over existing 0755 -> expect 0755 */
|
||||
replace_file_with_mode("exec_on", "filemodes/exec_on.0", 0644);
|
||||
add_and_check_mode(index, "exec_on", 0100755);
|
||||
add_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
|
||||
/* 3 - add 0755 over existing 0644 -> expect 0644 */
|
||||
replace_file_with_mode("exec_off", "filemodes/exec_off.1", 0755);
|
||||
add_and_check_mode(index, "exec_off", 0100644);
|
||||
add_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* 4 - add 0755 over existing 0755 -> expect 0755 */
|
||||
replace_file_with_mode("exec_on", "filemodes/exec_on.1", 0755);
|
||||
add_and_check_mode(index, "exec_on", 0100755);
|
||||
add_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
|
||||
/* 5 - append 0644 over existing 0644 -> expect 0644 */
|
||||
replace_file_with_mode("exec_off", "filemodes/exec_off.2", 0644);
|
||||
append_and_check_mode(index, "exec_off", 0100644);
|
||||
append_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* 6 - append 0644 over existing 0755 -> expect 0755 */
|
||||
replace_file_with_mode("exec_on", "filemodes/exec_on.2", 0644);
|
||||
append_and_check_mode(index, "exec_on", 0100755);
|
||||
append_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
|
||||
/* 7 - append 0755 over existing 0644 -> expect 0644 */
|
||||
replace_file_with_mode("exec_off", "filemodes/exec_off.3", 0755);
|
||||
append_and_check_mode(index, "exec_off", 0100644);
|
||||
append_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* 8 - append 0755 over existing 0755 -> expect 0755 */
|
||||
replace_file_with_mode("exec_on", "filemodes/exec_on.3", 0755);
|
||||
append_and_check_mode(index, "exec_on", 0100755);
|
||||
append_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
|
||||
/* 9 - add new 0644 -> expect 0644 */
|
||||
cl_git_write2file("filemodes/new_off", "blah",
|
||||
O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
||||
add_and_check_mode(index, "new_off", 0100644);
|
||||
add_and_check_mode(index, "new_off", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* this test won't give predictable results on a platform
|
||||
* that doesn't support filemodes correctly, so skip it.
|
||||
@ -142,7 +142,7 @@ void test_index_filemodes__untrusted(void)
|
||||
/* 10 - add 0755 -> expect 0755 */
|
||||
cl_git_write2file("filemodes/new_on", "blah",
|
||||
O_WRONLY | O_CREAT | O_TRUNC, 0755);
|
||||
add_and_check_mode(index, "new_on", 0100755);
|
||||
add_and_check_mode(index, "new_on", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
}
|
||||
|
||||
git_index_free(index);
|
||||
@ -168,45 +168,45 @@ void test_index_filemodes__trusted(void)
|
||||
|
||||
/* 1 - add 0644 over existing 0644 -> expect 0644 */
|
||||
replace_file_with_mode("exec_off", "filemodes/exec_off.0", 0644);
|
||||
add_and_check_mode(index, "exec_off", 0100644);
|
||||
add_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* 2 - add 0644 over existing 0755 -> expect 0644 */
|
||||
replace_file_with_mode("exec_on", "filemodes/exec_on.0", 0644);
|
||||
add_and_check_mode(index, "exec_on", 0100644);
|
||||
add_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* 3 - add 0755 over existing 0644 -> expect 0755 */
|
||||
replace_file_with_mode("exec_off", "filemodes/exec_off.1", 0755);
|
||||
add_and_check_mode(index, "exec_off", 0100755);
|
||||
add_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
|
||||
/* 4 - add 0755 over existing 0755 -> expect 0755 */
|
||||
replace_file_with_mode("exec_on", "filemodes/exec_on.1", 0755);
|
||||
add_and_check_mode(index, "exec_on", 0100755);
|
||||
add_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
|
||||
/* 5 - append 0644 over existing 0644 -> expect 0644 */
|
||||
replace_file_with_mode("exec_off", "filemodes/exec_off.2", 0644);
|
||||
append_and_check_mode(index, "exec_off", 0100644);
|
||||
append_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* 6 - append 0644 over existing 0755 -> expect 0644 */
|
||||
replace_file_with_mode("exec_on", "filemodes/exec_on.2", 0644);
|
||||
append_and_check_mode(index, "exec_on", 0100644);
|
||||
append_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* 7 - append 0755 over existing 0644 -> expect 0755 */
|
||||
replace_file_with_mode("exec_off", "filemodes/exec_off.3", 0755);
|
||||
append_and_check_mode(index, "exec_off", 0100755);
|
||||
append_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
|
||||
/* 8 - append 0755 over existing 0755 -> expect 0755 */
|
||||
replace_file_with_mode("exec_on", "filemodes/exec_on.3", 0755);
|
||||
append_and_check_mode(index, "exec_on", 0100755);
|
||||
append_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
|
||||
/* 9 - add new 0644 -> expect 0644 */
|
||||
cl_git_write2file("filemodes/new_off", "blah",
|
||||
O_WRONLY | O_CREAT | O_TRUNC, 0644);
|
||||
add_and_check_mode(index, "new_off", 0100644);
|
||||
add_and_check_mode(index, "new_off", GIT_FILEMODE_BLOB);
|
||||
|
||||
/* 10 - add 0755 -> expect 0755 */
|
||||
cl_git_write2file("filemodes/new_on", "blah",
|
||||
O_WRONLY | O_CREAT | O_TRUNC, 0755);
|
||||
add_and_check_mode(index, "new_on", 0100755);
|
||||
add_and_check_mode(index, "new_on", GIT_FILEMODE_BLOB_EXECUTABLE);
|
||||
|
||||
git_index_free(index);
|
||||
}
|
||||
|
@ -4,9 +4,6 @@
|
||||
static const char *blob_oid = "3d0970ec547fc41ef8a5882dde99c6adce65b021";
|
||||
static const char *tree_oid = "1b05fdaa881ee45b48cbaa5e9b037d667a47745e";
|
||||
|
||||
#define GROUP_WRITABLE_FILE 0100664
|
||||
#define REGULAR_FILE 0100644
|
||||
|
||||
void test_object_tree_attributes__ensure_correctness_of_attributes_on_insertion(void)
|
||||
{
|
||||
git_treebuilder *builder;
|
||||
@ -16,9 +13,9 @@ void test_object_tree_attributes__ensure_correctness_of_attributes_on_insertion(
|
||||
|
||||
cl_git_pass(git_treebuilder_create(&builder, NULL));
|
||||
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, 0777777));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, 0100666));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, 0000001));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, (git_filemode_t)0777777));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, (git_filemode_t)0100666));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, (git_filemode_t)0000001));
|
||||
|
||||
git_treebuilder_free(builder);
|
||||
}
|
||||
@ -37,7 +34,7 @@ void test_object_tree_attributes__group_writable_tree_entries_created_with_an_an
|
||||
|
||||
entry = git_tree_entry_byname(tree, "old_mode.txt");
|
||||
cl_assert_equal_i(
|
||||
GROUP_WRITABLE_FILE,
|
||||
GIT_FILEMODE_BLOB_GROUP_WRITABLE,
|
||||
git_tree_entry_attributes(entry));
|
||||
|
||||
git_tree_free(tree);
|
||||
@ -63,10 +60,10 @@ void test_object_tree_attributes__normalize_attributes_when_inserting_in_a_new_t
|
||||
builder,
|
||||
"normalized.txt",
|
||||
&bid,
|
||||
GROUP_WRITABLE_FILE));
|
||||
GIT_FILEMODE_BLOB_GROUP_WRITABLE));
|
||||
|
||||
cl_assert_equal_i(
|
||||
REGULAR_FILE,
|
||||
GIT_FILEMODE_BLOB,
|
||||
git_tree_entry_attributes(entry));
|
||||
|
||||
cl_git_pass(git_treebuilder_write(&tid, repo, builder));
|
||||
@ -76,7 +73,7 @@ void test_object_tree_attributes__normalize_attributes_when_inserting_in_a_new_t
|
||||
|
||||
entry = git_tree_entry_byname(tree, "normalized.txt");
|
||||
cl_assert_equal_i(
|
||||
REGULAR_FILE,
|
||||
GIT_FILEMODE_BLOB,
|
||||
git_tree_entry_attributes(entry));
|
||||
|
||||
git_tree_free(tree);
|
||||
@ -100,7 +97,7 @@ void test_object_tree_attributes__normalize_attributes_when_creating_a_tree_from
|
||||
|
||||
entry = git_treebuilder_get(builder, "old_mode.txt");
|
||||
cl_assert_equal_i(
|
||||
REGULAR_FILE,
|
||||
GIT_FILEMODE_BLOB,
|
||||
git_tree_entry_attributes(entry));
|
||||
|
||||
cl_git_pass(git_treebuilder_write(&tid2, repo, builder));
|
||||
@ -110,7 +107,7 @@ void test_object_tree_attributes__normalize_attributes_when_creating_a_tree_from
|
||||
cl_git_pass(git_tree_lookup(&tree, repo, &tid2));
|
||||
entry = git_tree_entry_byname(tree, "old_mode.txt");
|
||||
cl_assert_equal_i(
|
||||
REGULAR_FILE,
|
||||
GIT_FILEMODE_BLOB,
|
||||
git_tree_entry_attributes(entry));
|
||||
|
||||
git_tree_free(tree);
|
||||
|
@ -35,11 +35,16 @@ void test_object_tree_write__from_memory(void)
|
||||
cl_git_pass(git_tree_lookup(&tree, g_repo, &id));
|
||||
cl_git_pass(git_treebuilder_create(&builder, tree));
|
||||
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "", &bid, 0100644));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "/", &bid, 0100644));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "folder/new.txt", &bid, 0100644));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "",
|
||||
&bid, GIT_FILEMODE_BLOB));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "/",
|
||||
&bid, GIT_FILEMODE_BLOB));
|
||||
cl_git_fail(git_treebuilder_insert(NULL, builder, "folder/new.txt",
|
||||
&bid, GIT_FILEMODE_BLOB));
|
||||
|
||||
cl_git_pass(git_treebuilder_insert(
|
||||
NULL, builder, "new.txt", &bid, GIT_FILEMODE_BLOB));
|
||||
|
||||
cl_git_pass(git_treebuilder_insert(NULL,builder,"new.txt",&bid,0100644));
|
||||
cl_git_pass(git_treebuilder_write(&rid, g_repo, builder));
|
||||
|
||||
cl_assert(git_oid_cmp(&rid, &id2) == 0);
|
||||
@ -63,14 +68,16 @@ void test_object_tree_write__subtree(void)
|
||||
|
||||
//create subtree
|
||||
cl_git_pass(git_treebuilder_create(&builder, NULL));
|
||||
cl_git_pass(git_treebuilder_insert(NULL,builder,"new.txt",&bid,0100644)); //-V536
|
||||
cl_git_pass(git_treebuilder_insert(
|
||||
NULL, builder, "new.txt", &bid, GIT_FILEMODE_BLOB)); //-V536
|
||||
cl_git_pass(git_treebuilder_write(&subtree_id, g_repo, builder));
|
||||
git_treebuilder_free(builder);
|
||||
|
||||
// create parent tree
|
||||
cl_git_pass(git_tree_lookup(&tree, g_repo, &id));
|
||||
cl_git_pass(git_treebuilder_create(&builder, tree));
|
||||
cl_git_pass(git_treebuilder_insert(NULL,builder,"new",&subtree_id,040000)); //-V536
|
||||
cl_git_pass(git_treebuilder_insert(
|
||||
NULL, builder, "new", &subtree_id, GIT_FILEMODE_TREE)); //-V536
|
||||
cl_git_pass(git_treebuilder_write(&id_hiearar, g_repo, builder));
|
||||
git_treebuilder_free(builder);
|
||||
git_tree_free(tree);
|
||||
@ -96,23 +103,23 @@ void test_object_tree_write__sorted_subtrees(void)
|
||||
unsigned int attr;
|
||||
const char *filename;
|
||||
} entries[] = {
|
||||
{ 0100644, ".gitattributes" },
|
||||
{ 0100644, ".gitignore" },
|
||||
{ 0100644, ".htaccess" },
|
||||
{ 0100644, "Capfile" },
|
||||
{ 0100644, "Makefile"},
|
||||
{ 0100644, "README"},
|
||||
{ 0040000, "app"},
|
||||
{ 0040000, "cake"},
|
||||
{ 0040000, "config"},
|
||||
{ 0100644, "c"},
|
||||
{ 0100644, "git_test.txt"},
|
||||
{ 0100644, "htaccess.htaccess"},
|
||||
{ 0100644, "index.php"},
|
||||
{ 0040000, "plugins"},
|
||||
{ 0040000, "schemas"},
|
||||
{ 0040000, "ssl-certs"},
|
||||
{ 0040000, "vendors"}
|
||||
{ GIT_FILEMODE_BLOB, ".gitattributes" },
|
||||
{ GIT_FILEMODE_BLOB, ".gitignore" },
|
||||
{ GIT_FILEMODE_BLOB, ".htaccess" },
|
||||
{ GIT_FILEMODE_BLOB, "Capfile" },
|
||||
{ GIT_FILEMODE_BLOB, "Makefile"},
|
||||
{ GIT_FILEMODE_BLOB, "README"},
|
||||
{ GIT_FILEMODE_TREE, "app"},
|
||||
{ GIT_FILEMODE_TREE, "cake"},
|
||||
{ GIT_FILEMODE_TREE, "config"},
|
||||
{ GIT_FILEMODE_BLOB, "c"},
|
||||
{ GIT_FILEMODE_BLOB, "git_test.txt"},
|
||||
{ GIT_FILEMODE_BLOB, "htaccess.htaccess"},
|
||||
{ GIT_FILEMODE_BLOB, "index.php"},
|
||||
{ GIT_FILEMODE_TREE, "plugins"},
|
||||
{ GIT_FILEMODE_TREE, "schemas"},
|
||||
{ GIT_FILEMODE_TREE, "ssl-certs"},
|
||||
{ GIT_FILEMODE_TREE, "vendors"}
|
||||
};
|
||||
|
||||
git_oid blank_oid, tree_oid;
|
||||
|
Loading…
Reference in New Issue
Block a user