checkout.h: wrap the arguments to unique_tracking_name()
[gitweb.git] / t / t3430-rebase-merges.sh
index 35260862fcb759c9f29ded4fcf3ba0f19628631b..2608e5483d5268f4b84f726b7b2d54961ee76a27 100755 (executable)
@@ -70,6 +70,7 @@ test_expect_success 'create completely different structure' '
        merge -C H second
        merge onebranch # Merge the topic branch '\''onebranch'\''
        EOF
+       cp script-from-scratch script-from-scratch-orig &&
        test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
        test_tick &&
        git rebase -i -r A &&
@@ -275,4 +276,58 @@ test_expect_success 'root commits' '
        test_cmp_rev HEAD $before
 '
 
+test_expect_success 'a "merge" into a root commit is a fast-forward' '
+       head=$(git rev-parse HEAD) &&
+       cat >script-from-scratch <<-EOF &&
+       reset [new root]
+       merge $head
+       EOF
+       test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
+       test_tick &&
+       git rebase -i -r HEAD^ &&
+       test_cmp_rev HEAD $head
+'
+
+test_expect_success 'A root commit can be a cousin, treat it that way' '
+       git checkout --orphan khnum &&
+       test_commit yama &&
+       git checkout -b asherah master &&
+       test_commit shamkat &&
+       git merge --allow-unrelated-histories khnum &&
+       test_tick &&
+       git rebase -f -r HEAD^ &&
+       ! test_cmp_rev HEAD^2 khnum &&
+       test_cmp_graph HEAD^.. <<-\EOF &&
+       *   Merge branch '\''khnum'\'' into asherah
+       |\
+       | * yama
+       o shamkat
+       EOF
+       test_tick &&
+       git rebase --rebase-merges=rebase-cousins HEAD^ &&
+       test_cmp_graph HEAD^.. <<-\EOF
+       *   Merge branch '\''khnum'\'' into asherah
+       |\
+       | * yama
+       |/
+       o shamkat
+       EOF
+'
+
+test_expect_success 'labels that are object IDs are rewritten' '
+       git checkout -b third B &&
+       test_tick &&
+       test_commit I &&
+       third=$(git rev-parse HEAD) &&
+       git checkout -b labels master &&
+       git merge --no-commit third &&
+       test_tick &&
+       git commit -m "Merge commit '\''$third'\'' into labels" &&
+       cp script-from-scratch-orig script-from-scratch &&
+       test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
+       test_tick &&
+       git rebase -i -r A &&
+       ! grep "^label $third$" .git/ORIGINAL-TODO
+'
+
 test_done