summaryrefslogtreecommitdiff
path: root/revision.c
diff options
context:
space:
mode:
authorKirill Smelkov <kirr@mns.spb.ru>2014-02-05 20:57:12 +0400
committerJunio C Hamano <gitster@pobox.com>2014-02-05 10:51:16 -0800
commit6275c91c08f16f9d9aefea39ab7dab8560f50512 (patch)
tree96c90081fab08c1d0aa52b743a97a18e702a0204 /revision.c
parent7bc4ec01dde22be0156d64ef77db7364a11cb859 (diff)
downloadgit-6275c91c08f16f9d9aefea39ab7dab8560f50512.tar.gz
revision: convert to using diff_tree_sha1()
Since diff_tree_sha1() can now accept empty trees via NULL sha1, we could just call it without manually reading trees into tree_desc and duplicating code. Besides, that if (!tree) return 0; looked suspect - we were saying an invalid tree != empty tree, but maybe it is better to just say the tree is invalid here, which is what diff_tree_sha1() does for such case. Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'revision.c')
-rw-r--r--revision.c12
1 files changed, 1 insertions, 11 deletions
diff --git a/revision.c b/revision.c
index a0df72f32c..7f61ecde8c 100644
--- a/revision.c
+++ b/revision.c
@@ -496,24 +496,14 @@ static int rev_compare_tree(struct rev_info *revs,
static int rev_same_tree_as_empty(struct rev_info *revs, struct commit *commit)
{
int retval;
- void *tree;
- unsigned long size;
- struct tree_desc empty, real;
struct tree *t1 = commit->tree;
if (!t1)
return 0;
- tree = read_object_with_reference(t1->object.sha1, tree_type, &size, NULL);
- if (!tree)
- return 0;
- init_tree_desc(&real, tree, size);
- init_tree_desc(&empty, "", 0);
-
tree_difference = REV_TREE_SAME;
DIFF_OPT_CLR(&revs->pruning, HAS_CHANGES);
- retval = diff_tree(&empty, &real, "", &revs->pruning);
- free(tree);
+ retval = diff_tree_sha1(NULL, t1->object.sha1, "", &revs->pruning);
return retval >= 0 && (tree_difference == REV_TREE_SAME);
}