diff options
author | Vincent Ambo <mail@tazj.in> | 2021-09-21T10·03+0300 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2021-09-21T11·29+0300 |
commit | 43b1791ec601732ac31195df96781a848360a9ac (patch) | |
tree | daae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/t/t7064-wtstatus-pv2.sh | |
parent | 2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff) |
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping it in sync with cgit would be easier this way, but it has proven not to be a big issue. On the other hand, a vendored copy of git is an annoying maintenance burden. It is much easier to rebase the single (dottime) patch that we have. This removes the vendored copy of git and instead passes the git source code to cgit via `pkgs.srcOnly`, which includes the applied patch so that cgit can continue rendering dottime. Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/t/t7064-wtstatus-pv2.sh')
-rwxr-xr-x | third_party/git/t/t7064-wtstatus-pv2.sh | 660 |
1 files changed, 0 insertions, 660 deletions
diff --git a/third_party/git/t/t7064-wtstatus-pv2.sh b/third_party/git/t/t7064-wtstatus-pv2.sh deleted file mode 100755 index 537787e598b4..000000000000 --- a/third_party/git/t/t7064-wtstatus-pv2.sh +++ /dev/null @@ -1,660 +0,0 @@ -#!/bin/sh - -test_description='git status --porcelain=v2 - -This test exercises porcelain V2 output for git status.' - - -. ./test-lib.sh - - -test_expect_success setup ' - test_tick && - git config core.autocrlf false && - echo x >file_x && - echo y >file_y && - echo z >file_z && - mkdir dir1 && - echo a >dir1/file_a && - echo b >dir1/file_b -' - -test_expect_success 'before initial commit, nothing added, only untracked' ' - cat >expect <<-EOF && - # branch.oid (initial) - # branch.head master - ? actual - ? dir1/ - ? expect - ? file_x - ? file_y - ? file_z - EOF - - git status --porcelain=v2 --branch --untracked-files=normal >actual && - test_cmp expect actual -' - -test_expect_success 'before initial commit, things added' ' - git add file_x file_y file_z dir1 && - OID_A=$(git hash-object -t blob -- dir1/file_a) && - OID_B=$(git hash-object -t blob -- dir1/file_b) && - OID_X=$(git hash-object -t blob -- file_x) && - OID_Y=$(git hash-object -t blob -- file_y) && - OID_Z=$(git hash-object -t blob -- file_z) && - - cat >expect <<-EOF && - # branch.oid (initial) - # branch.head master - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_A dir1/file_a - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_B dir1/file_b - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_X file_x - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_Y file_y - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_Z file_z - ? actual - ? expect - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'before initial commit, things added (-z)' ' - lf_to_nul >expect <<-EOF && - # branch.oid (initial) - # branch.head master - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_A dir1/file_a - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_B dir1/file_b - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_X file_x - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_Y file_y - 1 A. N... 000000 100644 100644 $ZERO_OID $OID_Z file_z - ? actual - ? expect - EOF - - git status -z --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'make first commit, comfirm HEAD oid and branch' ' - git commit -m initial && - H0=$(git rev-parse HEAD) && - cat >expect <<-EOF && - # branch.oid $H0 - # branch.head master - ? actual - ? expect - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'after first commit, create unstaged changes' ' - echo x >>file_x && - OID_X1=$(git hash-object -t blob -- file_x) && - rm file_z && - H0=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $H0 - # branch.head master - 1 .M N... 100644 100644 100644 $OID_X $OID_X file_x - 1 .D N... 100644 100644 000000 $OID_Z $OID_Z file_z - ? actual - ? expect - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'after first commit but omit untracked files and branch' ' - cat >expect <<-EOF && - 1 .M N... 100644 100644 100644 $OID_X $OID_X file_x - 1 .D N... 100644 100644 000000 $OID_Z $OID_Z file_z - EOF - - git status --porcelain=v2 --untracked-files=no >actual && - test_cmp expect actual -' - -test_expect_success 'after first commit, stage existing changes' ' - git add file_x && - git rm file_z && - H0=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $H0 - # branch.head master - 1 M. N... 100644 100644 100644 $OID_X $OID_X1 file_x - 1 D. N... 100644 000000 000000 $OID_Z $ZERO_OID file_z - ? actual - ? expect - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'rename causes 2 path lines' ' - git mv file_y renamed_y && - H0=$(git rev-parse HEAD) && - - q_to_tab >expect <<-EOF && - # branch.oid $H0 - # branch.head master - 1 M. N... 100644 100644 100644 $OID_X $OID_X1 file_x - 1 D. N... 100644 000000 000000 $OID_Z $ZERO_OID file_z - 2 R. N... 100644 100644 100644 $OID_Y $OID_Y R100 renamed_yQfile_y - ? actual - ? expect - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'rename causes 2 path lines (-z)' ' - H0=$(git rev-parse HEAD) && - - ## Lines use NUL path separator and line terminator, so double transform here. - q_to_nul <<-EOF | lf_to_nul >expect && - # branch.oid $H0 - # branch.head master - 1 M. N... 100644 100644 100644 $OID_X $OID_X1 file_x - 1 D. N... 100644 000000 000000 $OID_Z $ZERO_OID file_z - 2 R. N... 100644 100644 100644 $OID_Y $OID_Y R100 renamed_yQfile_y - ? actual - ? expect - EOF - - git status --porcelain=v2 --branch --untracked-files=all -z >actual && - test_cmp expect actual -' - -test_expect_success 'make second commit, confirm clean and new HEAD oid' ' - git commit -m second && - H1=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $H1 - # branch.head master - ? actual - ? expect - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'confirm ignored files are not printed' ' - test_when_finished "rm -f x.ign .gitignore" && - echo x.ign >.gitignore && - echo "ignore me" >x.ign && - - cat >expect <<-EOF && - ? .gitignore - ? actual - ? expect - EOF - - git status --porcelain=v2 --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'ignored files are printed with --ignored' ' - test_when_finished "rm -f x.ign .gitignore" && - echo x.ign >.gitignore && - echo "ignore me" >x.ign && - - cat >expect <<-EOF && - ? .gitignore - ? actual - ? expect - ! x.ign - EOF - - git status --porcelain=v2 --ignored --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'create and commit permanent ignore file' ' - cat >.gitignore <<-EOF && - actual* - expect* - EOF - - git add .gitignore && - git commit -m ignore_trash && - H1=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $H1 - # branch.head master - EOF - - git status --porcelain=v2 --branch >actual && - test_cmp expect actual -' - -test_expect_success 'verify --intent-to-add output' ' - test_when_finished "git rm -f intent1.add intent2.add" && - touch intent1.add && - echo test >intent2.add && - - git add --intent-to-add intent1.add intent2.add && - - cat >expect <<-EOF && - 1 .A N... 000000 000000 100644 $ZERO_OID $ZERO_OID intent1.add - 1 .A N... 000000 000000 100644 $ZERO_OID $ZERO_OID intent2.add - EOF - - git status --porcelain=v2 >actual && - test_cmp expect actual -' - -test_expect_success 'verify AA (add-add) conflict' ' - test_when_finished "git reset --hard" && - - git branch AA_A master && - git checkout AA_A && - echo "Branch AA_A" >conflict.txt && - OID_AA_A=$(git hash-object -t blob -- conflict.txt) && - git add conflict.txt && - git commit -m "branch aa_a" && - - git branch AA_B master && - git checkout AA_B && - echo "Branch AA_B" >conflict.txt && - OID_AA_B=$(git hash-object -t blob -- conflict.txt) && - git add conflict.txt && - git commit -m "branch aa_b" && - - git branch AA_M AA_B && - git checkout AA_M && - test_must_fail git merge AA_A && - - HM=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $HM - # branch.head AA_M - u AA N... 000000 100644 100644 100644 $ZERO_OID $OID_AA_B $OID_AA_A conflict.txt - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'verify UU (edit-edit) conflict' ' - test_when_finished "git reset --hard" && - - git branch UU_ANC master && - git checkout UU_ANC && - echo "Ancestor" >conflict.txt && - OID_UU_ANC=$(git hash-object -t blob -- conflict.txt) && - git add conflict.txt && - git commit -m "UU_ANC" && - - git branch UU_A UU_ANC && - git checkout UU_A && - echo "Branch UU_A" >conflict.txt && - OID_UU_A=$(git hash-object -t blob -- conflict.txt) && - git add conflict.txt && - git commit -m "branch uu_a" && - - git branch UU_B UU_ANC && - git checkout UU_B && - echo "Branch UU_B" >conflict.txt && - OID_UU_B=$(git hash-object -t blob -- conflict.txt) && - git add conflict.txt && - git commit -m "branch uu_b" && - - git branch UU_M UU_B && - git checkout UU_M && - test_must_fail git merge UU_A && - - HM=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $HM - # branch.head UU_M - u UU N... 100644 100644 100644 100644 $OID_UU_ANC $OID_UU_B $OID_UU_A conflict.txt - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual -' - -test_expect_success 'verify upstream fields in branch header' ' - git checkout master && - test_when_finished "rm -rf sub_repo" && - git clone . sub_repo && - ( - ## Confirm local master tracks remote master. - cd sub_repo && - HUF=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $HUF - # branch.head master - # branch.upstream origin/master - # branch.ab +0 -0 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual && - - ## Test ahead/behind. - echo xyz >file_xyz && - git add file_xyz && - git commit -m xyz && - - HUF=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $HUF - # branch.head master - # branch.upstream origin/master - # branch.ab +1 -0 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual && - - ## Repeat the above but without --branch. - git status --porcelain=v2 --untracked-files=all >actual && - test_must_be_empty actual && - - ## Test upstream-gone case. Fake this by pointing origin/master at - ## a non-existing commit. - OLD=$(git rev-parse origin/master) && - NEW=$ZERO_OID && - mv .git/packed-refs .git/old-packed-refs && - sed "s/$OLD/$NEW/g" <.git/old-packed-refs >.git/packed-refs && - - HUF=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $HUF - # branch.head master - # branch.upstream origin/master - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_expect_success 'verify --[no-]ahead-behind with V2 format' ' - git checkout master && - test_when_finished "rm -rf sub_repo" && - git clone . sub_repo && - ( - ## Confirm local master tracks remote master. - cd sub_repo && - HUF=$(git rev-parse HEAD) && - - # Confirm --no-ahead-behind reports traditional branch.ab with 0/0 for equal branches. - cat >expect <<-EOF && - # branch.oid $HUF - # branch.head master - # branch.upstream origin/master - # branch.ab +0 -0 - EOF - - git status --no-ahead-behind --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual && - - # Confirm --ahead-behind reports traditional branch.ab with 0/0. - cat >expect <<-EOF && - # branch.oid $HUF - # branch.head master - # branch.upstream origin/master - # branch.ab +0 -0 - EOF - - git status --ahead-behind --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual && - - ## Test non-equal ahead/behind. - echo xyz >file_xyz && - git add file_xyz && - git commit -m xyz && - - HUF=$(git rev-parse HEAD) && - - # Confirm --no-ahead-behind reports branch.ab with ?/? for non-equal branches. - cat >expect <<-EOF && - # branch.oid $HUF - # branch.head master - # branch.upstream origin/master - # branch.ab +? -? - EOF - - git status --no-ahead-behind --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual && - - # Confirm --ahead-behind reports traditional branch.ab with 1/0. - cat >expect <<-EOF && - # branch.oid $HUF - # branch.head master - # branch.upstream origin/master - # branch.ab +1 -0 - EOF - - git status --ahead-behind --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual && - - # Confirm that "status.aheadbehind" DOES NOT work on V2 format. - git -c status.aheadbehind=false status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual && - - # Confirm that "status.aheadbehind" DOES NOT work on V2 format. - git -c status.aheadbehind=true status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_expect_success 'create and add submodule, submodule appears clean (A. S...)' ' - git checkout master && - git clone . sub_repo && - git clone . super_repo && - ( cd super_repo && - git submodule add ../sub_repo sub1 && - - ## Confirm stage/add of clean submodule. - HMOD=$(git hash-object -t blob -- .gitmodules) && - HSUP=$(git rev-parse HEAD) && - HSUB=$HSUP && - - cat >expect <<-EOF && - # branch.oid $HSUP - # branch.head master - # branch.upstream origin/master - # branch.ab +0 -0 - 1 A. N... 000000 100644 100644 $ZERO_OID $HMOD .gitmodules - 1 A. S... 000000 160000 160000 $ZERO_OID $HSUB sub1 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_expect_success 'untracked changes in added submodule (AM S..U)' ' - ( cd super_repo && - ## create untracked file in the submodule. - ( cd sub1 && - echo "xxxx" >file_in_sub - ) && - - HMOD=$(git hash-object -t blob -- .gitmodules) && - HSUP=$(git rev-parse HEAD) && - HSUB=$HSUP && - - cat >expect <<-EOF && - # branch.oid $HSUP - # branch.head master - # branch.upstream origin/master - # branch.ab +0 -0 - 1 A. N... 000000 100644 100644 $ZERO_OID $HMOD .gitmodules - 1 AM S..U 000000 160000 160000 $ZERO_OID $HSUB sub1 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_expect_success 'staged changes in added submodule (AM S.M.)' ' - ( cd super_repo && - ## stage the changes in the submodule. - ( cd sub1 && - git add file_in_sub - ) && - - HMOD=$(git hash-object -t blob -- .gitmodules) && - HSUP=$(git rev-parse HEAD) && - HSUB=$HSUP && - - cat >expect <<-EOF && - # branch.oid $HSUP - # branch.head master - # branch.upstream origin/master - # branch.ab +0 -0 - 1 A. N... 000000 100644 100644 $ZERO_OID $HMOD .gitmodules - 1 AM S.M. 000000 160000 160000 $ZERO_OID $HSUB sub1 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_expect_success 'staged and unstaged changes in added (AM S.M.)' ' - ( cd super_repo && - ( cd sub1 && - ## make additional unstaged changes (on the same file) in the submodule. - ## This does not cause us to get S.MU (because the submodule does not report - ## a "?" line for the unstaged changes). - echo "more changes" >>file_in_sub - ) && - - HMOD=$(git hash-object -t blob -- .gitmodules) && - HSUP=$(git rev-parse HEAD) && - HSUB=$HSUP && - - cat >expect <<-EOF && - # branch.oid $HSUP - # branch.head master - # branch.upstream origin/master - # branch.ab +0 -0 - 1 A. N... 000000 100644 100644 $ZERO_OID $HMOD .gitmodules - 1 AM S.M. 000000 160000 160000 $ZERO_OID $HSUB sub1 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_expect_success 'staged and untracked changes in added submodule (AM S.MU)' ' - ( cd super_repo && - ( cd sub1 && - ## stage new changes in tracked file. - git add file_in_sub && - ## create new untracked file. - echo "yyyy" >>another_file_in_sub - ) && - - HMOD=$(git hash-object -t blob -- .gitmodules) && - HSUP=$(git rev-parse HEAD) && - HSUB=$HSUP && - - cat >expect <<-EOF && - # branch.oid $HSUP - # branch.head master - # branch.upstream origin/master - # branch.ab +0 -0 - 1 A. N... 000000 100644 100644 $ZERO_OID $HMOD .gitmodules - 1 AM S.MU 000000 160000 160000 $ZERO_OID $HSUB sub1 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_expect_success 'commit within the submodule appears as new commit in super (AM SC..)' ' - ( cd super_repo && - ( cd sub1 && - ## Make a new commit in the submodule. - git add file_in_sub && - rm -f another_file_in_sub && - git commit -m "new commit" - ) && - - HMOD=$(git hash-object -t blob -- .gitmodules) && - HSUP=$(git rev-parse HEAD) && - HSUB=$HSUP && - - cat >expect <<-EOF && - # branch.oid $HSUP - # branch.head master - # branch.upstream origin/master - # branch.ab +0 -0 - 1 A. N... 000000 100644 100644 $ZERO_OID $HMOD .gitmodules - 1 AM SC.. 000000 160000 160000 $ZERO_OID $HSUB sub1 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_expect_success 'stage submodule in super and commit' ' - ( cd super_repo && - ## Stage the new submodule commit in the super. - git add sub1 && - ## Commit the super so that the sub no longer appears as added. - git commit -m "super commit" && - - HSUP=$(git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $HSUP - # branch.head master - # branch.upstream origin/master - # branch.ab +1 -0 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_expect_success 'make unstaged changes in existing submodule (.M S.M.)' ' - ( cd super_repo && - ( cd sub1 && - echo "zzzz" >>file_in_sub - ) && - - HSUP=$(git rev-parse HEAD) && - HSUB=$(cd sub1 && git rev-parse HEAD) && - - cat >expect <<-EOF && - # branch.oid $HSUP - # branch.head master - # branch.upstream origin/master - # branch.ab +1 -0 - 1 .M S.M. 160000 160000 160000 $HSUB $HSUB sub1 - EOF - - git status --porcelain=v2 --branch --untracked-files=all >actual && - test_cmp expect actual - ) -' - -test_done |