Skip to content

Commit

Permalink
tree-diff: allow diff_tree_sha1 to accept NULL sha1
Browse files Browse the repository at this point in the history
which would mean that corresponding tree - old or new - is empty.

As followup patches will show, that functionality was already needed in
several places of Git codebase, but there, we were preparing empty
tree_desc objects by hand, with some code duplication.

For handling sha1 = NULL case, let's reuse fill_tree_descriptor() which
returns just empty tree_desc in that case.

Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Kirill Smelkov authored and Junio C Hamano committed Feb 5, 2014
1 parent be961c2 commit 7913032
Showing 1 changed file with 4 additions and 8 deletions.
12 changes: 4 additions & 8 deletions tree-diff.c
Original file line number Diff line number Diff line change
Expand Up @@ -294,14 +294,10 @@ int diff_tree_sha1(const unsigned char *old, const unsigned char *new, const cha
unsigned long size1, size2;
int retval;

tree1 = read_object_with_reference(old, tree_type, &size1, NULL);
if (!tree1)
die("unable to read source tree (%s)", sha1_to_hex(old));
tree2 = read_object_with_reference(new, tree_type, &size2, NULL);
if (!tree2)
die("unable to read destination tree (%s)", sha1_to_hex(new));
init_tree_desc(&t1, tree1, size1);
init_tree_desc(&t2, tree2, size2);
tree1 = fill_tree_descriptor(&t1, old);
tree2 = fill_tree_descriptor(&t2, new);
size1 = t1.size;
size2 = t2.size;
retval = diff_tree(&t1, &t2, base, opt);
if (!*base && DIFF_OPT_TST(opt, FOLLOW_RENAMES) && diff_might_be_rename()) {
init_tree_desc(&t1, tree1, size1);
Expand Down

0 comments on commit 7913032

Please sign in to comment.