summaryrefslogtreecommitdiff
path: root/revision.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-03-12 21:39:31 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-03-12 21:39:31 (GMT)
commita41e109c4bcd56537fc3801623b1aa0dd4e06f1c (patch)
tree404a4098a6690de784d522780d615646cf4a2c22 /revision.c
parent8c3222079a9aca6622c6098a9157e59dddb1cfff (diff)
downloadgit-a41e109c4bcd56537fc3801623b1aa0dd4e06f1c.zip
git-a41e109c4bcd56537fc3801623b1aa0dd4e06f1c.tar.gz
git-a41e109c4bcd56537fc3801623b1aa0dd4e06f1c.tar.bz2
revision traversal: --remove-empty fix.
Marco Costalba reports that --remove-empty omits the commit that created paths we are interested in. try_to_simplify_commit() logic was dropping a parent we introduced those paths against, which I think is not what we meant. Instead, this marks such parent uninteresting. The traversal does not go beyond that parent as advertised, but we still say that the current commit changed things from that parent. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'revision.c')
-rw-r--r--revision.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/revision.c b/revision.c
index c8d93ff..03085ff 100644
--- a/revision.c
+++ b/revision.c
@@ -315,9 +315,14 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
return;
case TREE_NEW:
- if (revs->remove_empty_trees && same_tree_as_empty(p->tree)) {
- *pp = parent->next;
- continue;
+ if (revs->remove_empty_trees &&
+ same_tree_as_empty(p->tree)) {
+ /* We are adding all the specified paths from
+ * this parent, so the parents of it is
+ * not interesting, but the difference between
+ * this parent and us still is interesting.
+ */
+ p->object.flags |= UNINTERESTING;
}
/* fallthrough */
case TREE_DIFFERENT: