Revert 4b7f53da7618 (simplify-merges: drop merge from irrelevant side branch, 2013-01-17)
authorJunio C Hamano <gitster@pobox.com>
Mon, 8 Apr 2013 20:10:27 +0000 (13:10 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 8 Apr 2013 20:10:27 +0000 (13:10 -0700)
Kevin Bracey reports that the change regresses a case shown in the
user manual.

Trading one fix with another breakage is not worth it. Just keep
the test to document the existing breakage, and revert the change
for now.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
revision.c
t/t6012-rev-list-simplify.sh
index 71e62d831229773a9af2c4a81d72be5b33d3c921..eb981288686a2c7cd8c854e3f414b606ed4f8c69 100644 (file)
@@ -1970,22 +1970,6 @@ static struct merge_simplify_state *locate_simplify_state(struct rev_info *revs,
        return st;
 }
 
-static void remove_treesame_parents(struct commit *commit)
-{
-       struct commit_list **pp, *p;
-
-       pp = &commit->parents;
-       while ((p = *pp) != NULL) {
-               struct commit *parent = p->item;
-               if (parent->object.flags & TREESAME) {
-                       *pp = p->next;
-                       free(p);
-                       continue;
-               }
-               pp = &p->next;
-       }
-}
-
 static struct commit_list **simplify_one(struct rev_info *revs, struct commit *commit, struct commit_list **tail)
 {
        struct commit_list *p;
@@ -2039,17 +2023,10 @@ static struct commit_list **simplify_one(struct rev_info *revs, struct commit *c
                        break;
        }
 
-       if (revs->first_parent_only) {
+       if (revs->first_parent_only)
                cnt = 1;
-       } else {
-               /*
-                * A merge with a tree-same parent is useless
-                */
-               if (commit->parents && commit->parents->next)
-                       remove_treesame_parents(commit);
-
+       else
                cnt = remove_duplicate_parents(commit);
-       }
 
        /*
         * It is possible that we are a merge and one side branch
index 8e2ff13423ba01095404ec49232760bc66c68978..dd6dc844e787549ab7622fb4fbec4f89b52e22ab 100755 (executable)
@@ -77,14 +77,16 @@ test_expect_success setup '
 
 FMT='tformat:%P        %H | %s'
 
-check_result () {
+check_outcome () {
+       outcome=$1
+       shift
        for c in $1
        do
                echo "$c"
        done >expect &&
        shift &&
        param="$*" &&
-       test_expect_success "log $param" '
+       test_expect_$outcome "log $param" '
                git log --pretty="$FMT" --parents $param |
                unnote >actual &&
                sed -e "s/^.*   \([^ ]*\) .*/\1/" >check <actual &&
@@ -95,11 +97,15 @@ check_result () {
        '
 }
 
+check_result () {
+       check_outcome success "$@"
+}
+
 check_result 'L K J I H G F E D C B A' --full-history
 check_result 'K I H E C B A' --full-history -- file
 check_result 'K I H E C B A' --full-history --topo-order -- file
 check_result 'K I H E C B A' --full-history --date-order -- file
-check_result 'I E C B A' --simplify-merges -- file
+check_outcome failure 'I E C B A' --simplify-merges -- file
 check_result 'I B A' -- file
 check_result 'I B A' --topo-order -- file
 check_result 'H' --first-parent -- another-file