Add a test for git-commit being confused by relative GIT_DIR
[gitweb.git] / t / t9300-fast-import.sh
index 970d683650f5ee6b99a07ff10063710292b28ed1..6f95305bf461c2659392d3ee6a77a5360c833c37 100755 (executable)
@@ -60,10 +60,10 @@ INPUT_END
 test_expect_success \
     'A: create pack from stdin' \
     'git-fast-import --export-marks=marks.out <input &&
-        git-whatchanged master'
+        git whatchanged master'
 test_expect_success \
        'A: verify pack' \
-       'for p in .git/objects/pack/*.pack;do git-verify-pack $p||exit;done'
+       'for p in .git/objects/pack/*.pack;do git verify-pack $p||exit;done'
 
 cat >expect <<EOF
 author $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
@@ -73,8 +73,8 @@ initial
 EOF
 test_expect_success \
        'A: verify commit' \
-       'git-cat-file commit master | sed 1d >actual &&
-       diff -u expect actual'
+       'git cat-file commit master | sed 1d >actual &&
+       git diff expect actual'
 
 cat >expect <<EOF
 100644 blob file2
@@ -83,33 +83,70 @@ cat >expect <<EOF
 EOF
 test_expect_success \
        'A: verify tree' \
-       'git-cat-file -p master^{tree} | sed "s/ [0-9a-f]*      / /" >actual &&
-        diff -u expect actual'
+       'git cat-file -p master^{tree} | sed "s/ [0-9a-f]*      / /" >actual &&
+        git diff expect actual'
 
 echo "$file2_data" >expect
 test_expect_success \
        'A: verify file2' \
-       'git-cat-file blob master:file2 >actual && diff -u expect actual'
+       'git cat-file blob master:file2 >actual && git diff expect actual'
 
 echo "$file3_data" >expect
 test_expect_success \
        'A: verify file3' \
-       'git-cat-file blob master:file3 >actual && diff -u expect actual'
+       'git cat-file blob master:file3 >actual && git diff expect actual'
 
 printf "$file4_data" >expect
 test_expect_success \
        'A: verify file4' \
-       'git-cat-file blob master:file4 >actual && diff -u expect actual'
+       'git cat-file blob master:file4 >actual && git diff expect actual'
 
 cat >expect <<EOF
-:2 `git-rev-parse --verify master:file2`
-:3 `git-rev-parse --verify master:file3`
-:4 `git-rev-parse --verify master:file4`
-:5 `git-rev-parse --verify master^0`
+:2 `git rev-parse --verify master:file2`
+:3 `git rev-parse --verify master:file3`
+:4 `git rev-parse --verify master:file4`
+:5 `git rev-parse --verify master^0`
 EOF
 test_expect_success \
        'A: verify marks output' \
-       'diff -u expect marks.out'
+       'git diff expect marks.out'
+
+test_expect_success \
+       'A: verify marks import' \
+       'git-fast-import \
+               --import-marks=marks.out \
+               --export-marks=marks.new \
+               </dev/null &&
+       git diff -u expect marks.new'
+
+test_tick
+cat >input <<INPUT_END
+commit refs/heads/verify--import-marks
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+recreate from :5
+COMMIT
+
+from :5
+M 755 :2 copy-of-file2
+
+INPUT_END
+test_expect_success \
+       'A: verify marks import does not crash' \
+       'git-fast-import --import-marks=marks.out <input &&
+        git whatchanged verify--import-marks'
+test_expect_success \
+       'A: verify pack' \
+       'for p in .git/objects/pack/*.pack;do git verify-pack $p||exit;done'
+cat >expect <<EOF
+:000000 100755 0000000000000000000000000000000000000000 7123f7f44e39be127c5eb701e5968176ee9d78b1 A     copy-of-file2
+EOF
+git diff-tree -M -r master verify--import-marks >actual
+test_expect_success \
+       'A: verify diff' \
+       'compare_diff_raw expect actual &&
+        test `git rev-parse --verify master:file2` \
+           = `git rev-parse --verify verify--import-marks:copy-of-file2`'
 
 ###
 ### series B
@@ -138,7 +175,7 @@ rm -f .git/objects/pack_* .git/objects/index_*
 ###
 
 newf=`echo hi newf | git-hash-object -w --stdin`
-oldf=`git-rev-parse --verify master:file2`
+oldf=`git rev-parse --verify master:file2`
 test_tick
 cat >input <<INPUT_END
 commit refs/heads/branch
@@ -156,17 +193,17 @@ INPUT_END
 test_expect_success \
     'C: incremental import create pack from stdin' \
     'git-fast-import <input &&
-        git-whatchanged branch'
+        git whatchanged branch'
 test_expect_success \
        'C: verify pack' \
-       'for p in .git/objects/pack/*.pack;do git-verify-pack $p||exit;done'
+       'for p in .git/objects/pack/*.pack;do git verify-pack $p||exit;done'
 test_expect_success \
        'C: validate reuse existing blob' \
-       'test $newf = `git-rev-parse --verify branch:file2/newf`
-        test $oldf = `git-rev-parse --verify branch:file2/oldf`'
+       'test $newf = `git rev-parse --verify branch:file2/newf`
+        test $oldf = `git rev-parse --verify branch:file2/oldf`'
 
 cat >expect <<EOF
-parent `git-rev-parse --verify master^0`
+parent `git rev-parse --verify master^0`
 author $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 
@@ -174,15 +211,15 @@ second
 EOF
 test_expect_success \
        'C: verify commit' \
-       'git-cat-file commit branch | sed 1d >actual &&
-        diff -u expect actual'
+       'git cat-file commit branch | sed 1d >actual &&
+        git diff expect actual'
 
 cat >expect <<EOF
 :000000 100755 0000000000000000000000000000000000000000 f1fb5da718392694d0076d677d6d0e364c79b0bc A     file2/newf
 :100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 R100  file2   file2/oldf
 :100644 000000 0d92e9f3374ae2947c23aa477cbc68ce598135f1 0000000000000000000000000000000000000000 D     file3
 EOF
-git-diff-tree -M -r master branch >actual
+git diff-tree -M -r master branch >actual
 test_expect_success \
        'C: validate rename result' \
        'compare_diff_raw expect actual'
@@ -214,16 +251,16 @@ INPUT_END
 test_expect_success \
     'D: inline data in commit' \
     'git-fast-import <input &&
-        git-whatchanged branch'
+        git whatchanged branch'
 test_expect_success \
        'D: verify pack' \
-       'for p in .git/objects/pack/*.pack;do git-verify-pack $p||exit;done'
+       'for p in .git/objects/pack/*.pack;do git verify-pack $p||exit;done'
 
 cat >expect <<EOF
 :000000 100755 0000000000000000000000000000000000000000 35a59026a33beac1569b1c7f66f3090ce9c09afc A     newdir/exec.sh
 :000000 100644 0000000000000000000000000000000000000000 046d0371e9220107917db0d0e030628de8a1de9b A     newdir/interesting
 EOF
-git-diff-tree -M -r branch^ branch >actual
+git diff-tree -M -r branch^ branch >actual
 test_expect_success \
        'D: validate new files added' \
        'compare_diff_raw expect actual'
@@ -231,14 +268,14 @@ test_expect_success \
 echo "$file5_data" >expect
 test_expect_success \
        'D: verify file5' \
-       'git-cat-file blob branch:newdir/interesting >actual &&
-        diff -u expect actual'
+       'git cat-file blob branch:newdir/interesting >actual &&
+        git diff expect actual'
 
 echo "$file6_data" >expect
 test_expect_success \
        'D: verify file6' \
-       'git-cat-file blob branch:newdir/exec.sh >actual &&
-        diff -u expect actual'
+       'git cat-file blob branch:newdir/exec.sh >actual &&
+        git diff expect actual'
 
 ###
 ### series E
@@ -263,7 +300,7 @@ test_expect_success \
     'git-fast-import --date-format=rfc2822 <input'
 test_expect_success \
        'E: verify pack' \
-       'for p in .git/objects/pack/*.pack;do git-verify-pack $p||exit;done'
+       'for p in .git/objects/pack/*.pack;do git verify-pack $p||exit;done'
 
 cat >expect <<EOF
 author $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL> 1170778938 -0500
@@ -273,14 +310,14 @@ RFC 2822 type date
 EOF
 test_expect_success \
        'E: verify commit' \
-       'git-cat-file commit branch | sed 1,2d >actual &&
-       diff -u expect actual'
+       'git cat-file commit branch | sed 1,2d >actual &&
+       git diff expect actual'
 
 ###
 ### series F
 ###
 
-old_branch=`git-rev-parse --verify branch^0`
+old_branch=`git rev-parse --verify branch^0`
 test_tick
 cat >input <<INPUT_END
 commit refs/heads/branch
@@ -302,7 +339,7 @@ test_expect_success \
                echo BAD gfi did not fail
                return 1
         else
-               if test $old_branch = `git-rev-parse --verify branch^0`
+               if test $old_branch = `git rev-parse --verify branch^0`
                then
                        : branch unaffected and failure returned
                        return 0
@@ -314,11 +351,11 @@ test_expect_success \
        '
 test_expect_success \
        'F: verify pack' \
-       'for p in .git/objects/pack/*.pack;do git-verify-pack $p||exit;done'
+       'for p in .git/objects/pack/*.pack;do git verify-pack $p||exit;done'
 
 cat >expect <<EOF
-tree `git-rev-parse branch~1^{tree}`
-parent `git-rev-parse branch~1`
+tree `git rev-parse branch~1^{tree}`
+parent `git rev-parse branch~1`
 author $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
 
@@ -326,14 +363,14 @@ losing things already?
 EOF
 test_expect_success \
        'F: verify other commit' \
-       'git-cat-file commit other >actual &&
-       diff -u expect actual'
+       'git cat-file commit other >actual &&
+       git diff expect actual'
 
 ###
 ### series G
 ###
 
-old_branch=`git-rev-parse --verify branch^0`
+old_branch=`git rev-parse --verify branch^0`
 test_tick
 cat >input <<INPUT_END
 commit refs/heads/branch
@@ -350,11 +387,11 @@ test_expect_success \
     'git-fast-import --force <input'
 test_expect_success \
        'G: verify pack' \
-       'for p in .git/objects/pack/*.pack;do git-verify-pack $p||exit;done'
+       'for p in .git/objects/pack/*.pack;do git verify-pack $p||exit;done'
 test_expect_success \
        'G: branch changed, but logged' \
-       'test $old_branch != `git-rev-parse --verify branch^0` &&
-        test $old_branch = `git-rev-parse --verify branch@{1}`'
+       'test $old_branch != `git rev-parse --verify branch^0` &&
+        test $old_branch = `git rev-parse --verify branch@{1}`'
 
 ###
 ### series H
@@ -384,10 +421,10 @@ INPUT_END
 test_expect_success \
     'H: deletall, add 1' \
     'git-fast-import <input &&
-        git-whatchanged H'
+        git whatchanged H'
 test_expect_success \
        'H: verify pack' \
-       'for p in .git/objects/pack/*.pack;do git-verify-pack $p||exit;done'
+       'for p in .git/objects/pack/*.pack;do git verify-pack $p||exit;done'
 
 cat >expect <<EOF
 :100755 000000 f1fb5da718392694d0076d677d6d0e364c79b0bc 0000000000000000000000000000000000000000 D     file2/newf
@@ -396,7 +433,7 @@ cat >expect <<EOF
 :100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 R100  newdir/interesting      h/e/l/lo
 :100755 000000 e74b7d465e52746be2b4bae983670711e6e66657 0000000000000000000000000000000000000000 D     newdir/exec.sh
 EOF
-git-diff-tree -M -r H^ H >actual
+git diff-tree -M -r H^ H >actual
 test_expect_success \
        'H: validate old files removed, new files added' \
        'compare_diff_raw expect actual'
@@ -404,8 +441,8 @@ test_expect_success \
 echo "$file5_data" >expect
 test_expect_success \
        'H: verify file' \
-       'git-cat-file blob H:h/e/l/lo >actual &&
-        diff -u expect actual'
+       'git cat-file blob H:h/e/l/lo >actual &&
+        git diff expect actual'
 
 ###
 ### series I
@@ -426,12 +463,12 @@ test_expect_success \
     'git-fast-import --export-pack-edges=edges.list <input'
 
 cat >expect <<EOF
-.git/objects/pack/pack-.pack: `git-rev-parse --verify export-boundary`
+.git/objects/pack/pack-.pack: `git rev-parse --verify export-boundary`
 EOF
 test_expect_success \
        'I: verify edge list' \
        'sed -e s/pack-.*pack/pack-.pack/ edges.list >actual &&
-        diff -u expect actual'
+        git diff expect actual'
 
 ###
 ### series J
@@ -460,7 +497,7 @@ test_expect_success \
     'git-fast-import <input'
 test_expect_success \
        'J: branch has 1 commit, empty tree' \
-       'test 1 = `git-rev-list J | wc -l` &&
+       'test 1 = `git rev-list J | wc -l` &&
         test 0 = `git ls-tree J | wc -l`'
 
 ###
@@ -490,7 +527,208 @@ test_expect_success \
     'git-fast-import <input'
 test_expect_success \
     'K: verify K^1 = branch^1' \
-    'test `git-rev-parse --verify branch^1` \
-               = `git-rev-parse --verify K^1`'
+    'test `git rev-parse --verify branch^1` \
+               = `git rev-parse --verify K^1`'
+
+###
+### series L
+###
+
+cat >input <<INPUT_END
+blob
+mark :1
+data <<EOF
+some data
+EOF
+
+blob
+mark :2
+data <<EOF
+other data
+EOF
+
+commit refs/heads/L
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+create L
+COMMIT
+
+M 644 :1 b.
+M 644 :1 b/other
+M 644 :1 ba
+
+commit refs/heads/L
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+update L
+COMMIT
+
+M 644 :2 b.
+M 644 :2 b/other
+M 644 :2 ba
+INPUT_END
+
+cat >expect <<EXPECT_END
+:100644 100644 4268632... 55d3a52... M b.
+:040000 040000 0ae5cac... 443c768... M b
+:100644 100644 4268632... 55d3a52... M ba
+EXPECT_END
+
+test_expect_success \
+    'L: verify internal tree sorting' \
+       'git-fast-import <input &&
+        git diff-tree --abbrev --raw L^ L >output &&
+        git diff expect output'
+
+###
+### series M
+###
+
+test_tick
+cat >input <<INPUT_END
+commit refs/heads/M1
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+file rename
+COMMIT
+
+from refs/heads/branch^0
+R file2/newf file2/n.e.w.f
+
+INPUT_END
+
+cat >expect <<EOF
+:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100  file2/newf      file2/n.e.w.f
+EOF
+test_expect_success \
+       'M: rename file in same subdirectory' \
+       'git-fast-import <input &&
+        git diff-tree -M -r M1^ M1 >actual &&
+        compare_diff_raw expect actual'
+
+cat >input <<INPUT_END
+commit refs/heads/M2
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+file rename
+COMMIT
+
+from refs/heads/branch^0
+R file2/newf i/am/new/to/you
+
+INPUT_END
+
+cat >expect <<EOF
+:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100  file2/newf      i/am/new/to/you
+EOF
+test_expect_success \
+       'M: rename file to new subdirectory' \
+       'git-fast-import <input &&
+        git diff-tree -M -r M2^ M2 >actual &&
+        compare_diff_raw expect actual'
+
+cat >input <<INPUT_END
+commit refs/heads/M3
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+file rename
+COMMIT
+
+from refs/heads/M2^0
+R i other/sub
+
+INPUT_END
+
+cat >expect <<EOF
+:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100  i/am/new/to/you other/sub/am/new/to/you
+EOF
+test_expect_success \
+       'M: rename subdirectory to new subdirectory' \
+       'git-fast-import <input &&
+        git diff-tree -M -r M3^ M3 >actual &&
+        compare_diff_raw expect actual'
+
+###
+### series N
+###
+
+test_tick
+cat >input <<INPUT_END
+commit refs/heads/N1
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+file copy
+COMMIT
+
+from refs/heads/branch^0
+C file2/newf file2/n.e.w.f
+
+INPUT_END
+
+cat >expect <<EOF
+:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100  file2/newf      file2/n.e.w.f
+EOF
+test_expect_success \
+       'N: copy file in same subdirectory' \
+       'git-fast-import <input &&
+        git diff-tree -C --find-copies-harder -r N1^ N1 >actual &&
+        compare_diff_raw expect actual'
+
+cat >input <<INPUT_END
+commit refs/heads/N2
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+clean directory copy
+COMMIT
+
+from refs/heads/branch^0
+C file2 file3
+
+commit refs/heads/N2
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+modify directory copy
+COMMIT
+
+M 644 inline file3/file5
+data <<EOF
+$file5_data
+EOF
+
+INPUT_END
+
+cat >expect <<EOF
+:100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 C100  newdir/interesting      file3/file5
+:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100  file2/newf      file3/newf
+:100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100  file2/oldf      file3/oldf
+EOF
+test_expect_success \
+       'N: copy then modify subdirectory' \
+       'git-fast-import <input &&
+        git diff-tree -C --find-copies-harder -r N2^^ N2 >actual &&
+        compare_diff_raw expect actual'
+
+cat >input <<INPUT_END
+commit refs/heads/N3
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+dirty directory copy
+COMMIT
+
+from refs/heads/branch^0
+M 644 inline file2/file5
+data <<EOF
+$file5_data
+EOF
+
+C file2 file3
+D file2/file5
+
+INPUT_END
+
+test_expect_success \
+       'N: copy dirty subdirectory' \
+       'git-fast-import <input &&
+        test `git-rev-parse N2^{tree}` = `git-rev-parse N3^{tree}`'
 
 test_done