diff options
| author | Edward Thomson <ethomson@edwardthomson.com> | 2018-08-26 11:33:42 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-26 11:33:42 +0100 |
| commit | 85eb2cb67611483cc13c9d16589b88a6cb9dd19d (patch) | |
| tree | a7dbfa46909a26e50783b9c915e901f1b6785e4d /src/tree.c | |
| parent | 50186ce88bcca5d7a23d6365acb3e9a818474f6f (diff) | |
| parent | f00db9ed67423b04976f8d20b0de2ee1fb7c3993 (diff) | |
| download | libgit2-85eb2cb67611483cc13c9d16589b88a6cb9dd19d.tar.gz | |
Merge pull request #4727 from libgit2/cmn/null-oid-existing-tree
tree: accept null ids in existing trees when updating
Diffstat (limited to 'src/tree.c')
| -rw-r--r-- | src/tree.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/tree.c b/src/tree.c index 823385722..e4a0547a3 100644 --- a/src/tree.c +++ b/src/tree.c @@ -460,15 +460,16 @@ static int append_entry( git_treebuilder *bld, const char *filename, const git_oid *id, - git_filemode_t filemode) + git_filemode_t filemode, + bool validate) { git_tree_entry *entry; int error = 0; - if (!valid_entry_name(bld->repo, filename)) + if (validate && !valid_entry_name(bld->repo, filename)) return tree_error("failed to insert entry: invalid name for a tree entry", filename); - if (git_oid_iszero(id)) + if (validate && git_oid_iszero(id)) return tree_error("failed to insert entry: invalid null OID for a tree entry", filename); entry = alloc_entry(filename, strlen(filename), id); @@ -566,12 +567,12 @@ static int write_tree( last_comp = subdir; } - error = append_entry(bld, last_comp, &sub_oid, S_IFDIR); + error = append_entry(bld, last_comp, &sub_oid, S_IFDIR, true); git__free(subdir); if (error < 0) goto on_error; } else { - error = append_entry(bld, filename, &entry->id, entry->mode); + error = append_entry(bld, filename, &entry->id, entry->mode, true); if (error < 0) goto on_error; } @@ -669,7 +670,8 @@ int git_treebuilder_new( if (append_entry( bld, entry_src->filename, entry_src->oid, - entry_src->attr) < 0) + entry_src->attr, + false) < 0) goto on_error; } } |
