summaryrefslogtreecommitdiff
path: root/revision.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-03-12 13:39:31 -0800
committerJunio C Hamano <junkio@cox.net>2006-03-12 17:06:57 -0800
commitc348f31ab9d8f695aef405d9981b85c943a5875a (patch)
tree6df4d4c7e4e311b18294db68bae3850449d42af5 /revision.c
parenta41e109c4bcd56537fc3801623b1aa0dd4e06f1c (diff)
downloadgit-c348f31ab9d8f695aef405d9981b85c943a5875a.tar.gz
revision traversal: --remove-empty fix (take #2).
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 makes such parent parentless. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'revision.c')
-rw-r--r--revision.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/revision.c b/revision.c
index 03085ffe9d..73fba5d3da 100644
--- a/revision.c
+++ b/revision.c
@@ -317,12 +317,16 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit)
case TREE_NEW:
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.
+ /* We are adding all the specified
+ * paths from this parent, so the
+ * history beyond this parent is not
+ * interesting. Remove its parents
+ * (they are grandparents for us).
+ * IOW, we pretend this parent is a
+ * "root" commit.
*/
- p->object.flags |= UNINTERESTING;
+ parse_commit(p);
+ p->parents = NULL;
}
/* fallthrough */
case TREE_DIFFERENT: