]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t9350-fast-export.sh
Sync with 2.34.5
[thirdparty/git.git] / t / t9350-fast-export.sh
index 703428fd0a3f39ef9cce2ccb21d91397d0a9aee4..63beeb9f620e4814cf96975918bef25f52555491 100755 (executable)
@@ -4,6 +4,9 @@
 #
 
 test_description='git fast-export'
+GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+
 . ./test-lib.sh
 
 test_expect_success 'setup' '
@@ -31,13 +34,13 @@ test_expect_success 'setup' '
        git commit -m sitzt file2 &&
        test_tick &&
        git tag -a -m valentin muss &&
-       git merge -s ours master
+       git merge -s ours main
 
 '
 
 test_expect_success 'fast-export | fast-import' '
 
-       MASTER=$(git rev-parse --verify master) &&
+       MAIN=$(git rev-parse --verify main) &&
        REIN=$(git rev-parse --verify rein) &&
        WER=$(git rev-parse --verify wer) &&
        MUSS=$(git rev-parse --verify muss) &&
@@ -46,7 +49,7 @@ test_expect_success 'fast-export | fast-import' '
        git fast-export --all >actual &&
        (cd new &&
         git fast-import &&
-        test $MASTER = $(git rev-parse --verify refs/heads/master) &&
+        test $MAIN = $(git rev-parse --verify refs/heads/main) &&
         test $REIN = $(git rev-parse --verify refs/tags/rein) &&
         test $WER = $(git rev-parse --verify refs/heads/wer) &&
         test $MUSS = $(git rev-parse --verify refs/tags/muss)) <actual
@@ -80,35 +83,35 @@ test_expect_success 'fast-export --mark-tags ^muss^{commit} muss' '
        test_cmp expected actual
 '
 
-test_expect_success 'fast-export master~2..master' '
+test_expect_success 'fast-export main~2..main' '
 
-       git fast-export master~2..master >actual &&
-       sed "s/master/partial/" actual |
+       git fast-export main~2..main >actual &&
+       sed "s/main/partial/" actual |
                (cd new &&
                 git fast-import &&
-                test $MASTER != $(git rev-parse --verify refs/heads/partial) &&
-                git diff --exit-code master partial &&
-                git diff --exit-code master^ partial^ &&
+                test $MAIN != $(git rev-parse --verify refs/heads/partial) &&
+                git diff --exit-code main partial &&
+                git diff --exit-code main^ partial^ &&
                 test_must_fail git rev-parse partial~2)
 
 '
 
-test_expect_success 'fast-export --reference-excluded-parents master~2..master' '
+test_expect_success 'fast-export --reference-excluded-parents main~2..main' '
 
-       git fast-export --reference-excluded-parents master~2..master >actual &&
-       grep commit.refs/heads/master actual >commit-count &&
+       git fast-export --reference-excluded-parents main~2..main >actual &&
+       grep commit.refs/heads/main actual >commit-count &&
        test_line_count = 2 commit-count &&
-       sed "s/master/rewrite/" actual |
+       sed "s/main/rewrite/" actual |
                (cd new &&
                 git fast-import &&
-                test $MASTER = $(git rev-parse --verify refs/heads/rewrite))
+                test $MAIN = $(git rev-parse --verify refs/heads/rewrite))
 '
 
 test_expect_success 'fast-export --show-original-ids' '
 
-       git fast-export --show-original-ids master >output &&
+       git fast-export --show-original-ids main >output &&
        grep ^original-oid output| sed -e s/^original-oid.// | sort >actual &&
-       git rev-list --objects master muss >objects-and-names &&
+       git rev-list --objects main muss >objects-and-names &&
        awk "{print \$1}" objects-and-names | sort >commits-trees-blobs &&
        comm -23 actual commits-trees-blobs >unfound &&
        test_must_be_empty unfound
@@ -116,8 +119,8 @@ test_expect_success 'fast-export --show-original-ids' '
 
 test_expect_success 'fast-export --show-original-ids | git fast-import' '
 
-       git fast-export --show-original-ids master muss | git fast-import --quiet &&
-       test $MASTER = $(git rev-parse --verify refs/heads/master) &&
+       git fast-export --show-original-ids main muss | git fast-import --quiet &&
+       test $MAIN = $(git rev-parse --verify refs/heads/main) &&
        test $MUSS = $(git rev-parse --verify refs/tags/muss)
 '
 
@@ -200,7 +203,7 @@ test_expect_success 'encoding preserved if reencoding fails' '
 
 test_expect_success 'import/export-marks' '
 
-       git checkout -b marks master &&
+       git checkout -b marks main &&
        git fast-export --export-marks=tmp-marks HEAD &&
        test -s tmp-marks &&
        test_line_count = 3 tmp-marks &&
@@ -266,7 +269,7 @@ test_expect_success 'signed-tags=warn-strip' '
 test_expect_success 'setup submodule' '
 
        test_config_global protocol.file.allow always &&
-       git checkout -f master &&
+       git checkout -f main &&
        mkdir sub &&
        (
                cd sub &&
@@ -292,17 +295,17 @@ test_expect_success 'setup submodule' '
 test_expect_success 'submodule fast-export | fast-import' '
 
        test_config_global protocol.file.allow always &&
-       SUBENT1=$(git ls-tree master^ sub) &&
-       SUBENT2=$(git ls-tree master sub) &&
+       SUBENT1=$(git ls-tree main^ sub) &&
+       SUBENT2=$(git ls-tree main sub) &&
        rm -rf new &&
        mkdir new &&
        git --git-dir=new/.git init &&
        git fast-export --signed-tags=strip --all >actual &&
        (cd new &&
         git fast-import &&
-        test "$SUBENT1" = "$(git ls-tree refs/heads/master^ sub)" &&
-        test "$SUBENT2" = "$(git ls-tree refs/heads/master sub)" &&
-        git checkout master &&
+        test "$SUBENT1" = "$(git ls-tree refs/heads/main^ sub)" &&
+        test "$SUBENT2" = "$(git ls-tree refs/heads/main sub)" &&
+        git checkout main &&
         git submodule init &&
         git submodule update &&
         cmp sub/file ../sub/file) <actual
@@ -354,7 +357,7 @@ test_expect_success 'fast-export -C -C | fast-import' '
 
 '
 
-test_expect_success 'fast-export | fast-import when master is tagged' '
+test_expect_success 'fast-export | fast-import when main is tagged' '
 
        git tag -m msg last &&
        git fast-export -C -C --signed-tags=strip --all > output &&
@@ -469,8 +472,8 @@ mark :2
 data 3
 hi
 
-reset refs/heads/master
-commit refs/heads/master
+reset refs/heads/main
+commit refs/heads/main
 mark :3
 author A U Thor <author@example.com> 1112912713 -0700
 committer C O Mitter <committer@example.com> 1112912713 -0700
@@ -484,7 +487,7 @@ EOF
 test_expect_failure 'no exact-ref revisions included' '
        (
                cd limit-by-paths &&
-               git fast-export master~2..master~1 > output &&
+               git fast-export main~2..main~1 > output &&
                test_cmp expected output
        )
 '
@@ -526,7 +529,7 @@ test_expect_success 'full-tree re-shows unmodified files'        '
 '
 
 test_expect_success 'set-up a few more tags for tag export tests' '
-       git checkout -f master &&
+       git checkout -f main &&
        HEAD_TREE=$(git show -s --pretty=raw HEAD | grep tree | sed "s/tree //") &&
        git tag    tree_tag        -m "tagging a tree" $HEAD_TREE &&
        git tag -a tree_tag-obj    -m "tagging a tree" $HEAD_TREE &&
@@ -551,7 +554,7 @@ test_expect_success 'tag-obj_tag'     'git fast-export tag-obj_tag'
 test_expect_success 'tag-obj_tag-obj' 'git fast-export tag-obj_tag-obj'
 
 test_expect_success 'handling tags of blobs' '
-       git tag -a -m "Tag of a blob" blobtag $(git rev-parse master:file) &&
+       git tag -a -m "Tag of a blob" blobtag $(git rev-parse main:file) &&
        git fast-export blobtag >actual &&
        cat >expect <<-EOF &&
        blob
@@ -594,10 +597,10 @@ test_expect_success 'directory becomes symlink'        '
        ) &&
        (
                cd dirtosymlink &&
-               git fast-export master -- foo |
+               git fast-export main -- foo |
                (cd ../result && git fast-import --quiet)
        ) &&
-       (cd result && git show master:foo)
+       (cd result && git show main:foo)
 '
 
 test_expect_success 'fast-export quotes pathnames' '
@@ -645,7 +648,7 @@ mark :13
 data 5
 bump
 
-commit refs/heads/master
+commit refs/heads/main
 mark :14
 author A U Thor <author@example.com> 1112912773 -0700
 committer C O Mitter <committer@example.com> 1112912773 -0700
@@ -659,18 +662,18 @@ EOF
 test_expect_success 'avoid uninteresting refs' '
        > tmp-marks &&
        git fast-export --import-marks=tmp-marks \
-               --export-marks=tmp-marks master > /dev/null &&
+               --export-marks=tmp-marks main > /dev/null &&
        git tag v1.0 &&
        git branch uninteresting &&
        echo bump > file &&
        git commit -a -m bump &&
        git fast-export --import-marks=tmp-marks \
-               --export-marks=tmp-marks ^uninteresting ^v1.0 master > actual &&
+               --export-marks=tmp-marks ^uninteresting ^v1.0 main > actual &&
        test_cmp expected actual
 '
 
 cat > expected << EOF
-reset refs/heads/master
+reset refs/heads/main
 from :14
 
 EOF
@@ -678,14 +681,14 @@ EOF
 test_expect_success 'refs are updated even if no commits need to be exported' '
        > tmp-marks &&
        git fast-export --import-marks=tmp-marks \
-               --export-marks=tmp-marks master > /dev/null &&
+               --export-marks=tmp-marks main > /dev/null &&
        git fast-export --import-marks=tmp-marks \
-               --export-marks=tmp-marks master > actual &&
+               --export-marks=tmp-marks main > actual &&
        test_cmp expected actual
 '
 
 test_expect_success 'use refspec' '
-       git fast-export --refspec refs/heads/master:refs/heads/foobar master >actual2 &&
+       git fast-export --refspec refs/heads/main:refs/heads/foobar main >actual2 &&
        grep "^commit " actual2 | sort | uniq >actual &&
        echo "commit refs/heads/foobar" > expected &&
        test_cmp expected actual
@@ -738,15 +741,47 @@ test_expect_success 'merge commit gets exported with --import-marks' '
                test_commit initial &&
                git checkout -b topic &&
                test_commit on-topic &&
-               git checkout master &&
-               test_commit on-master &&
+               git checkout main &&
+               test_commit on-main &&
                test_tick &&
                git merge --no-ff -m Yeah topic &&
 
                echo ":1 $(git rev-parse HEAD^^)" >marks &&
-               git fast-export --import-marks=marks master >out &&
+               git fast-export --import-marks=marks main >out &&
                grep Yeah out
        )
 '
 
+
+test_expect_success 'fast-export --first-parent outputs all revisions output by revision walk' '
+       git init first-parent &&
+       (
+               cd first-parent &&
+               test_commit A &&
+               git checkout -b topic1 &&
+               test_commit B &&
+               git checkout main &&
+               git merge --no-ff topic1 &&
+
+               git checkout -b topic2 &&
+               test_commit C &&
+               git checkout main &&
+               git merge --no-ff topic2 &&
+
+               test_commit D &&
+
+               git fast-export main -- --first-parent >first-parent-export &&
+               git fast-export main -- --first-parent --reverse >first-parent-reverse-export &&
+               test_cmp first-parent-export first-parent-reverse-export &&
+
+               git init import &&
+               git -C import fast-import <first-parent-export &&
+
+               git log --format="%ad %s" --first-parent main >expected &&
+               git -C import log --format="%ad %s" --all >actual &&
+               test_cmp expected actual &&
+               test_line_count = 4 actual
+       )
+'
+
 test_done