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/t3402-rebase-merge.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/t3402-rebase-merge.sh')
-rwxr-xr-x | third_party/git/t/t3402-rebase-merge.sh | 242 |
1 files changed, 0 insertions, 242 deletions
diff --git a/third_party/git/t/t3402-rebase-merge.sh b/third_party/git/t/t3402-rebase-merge.sh deleted file mode 100755 index 6e032716a687..000000000000 --- a/third_party/git/t/t3402-rebase-merge.sh +++ /dev/null @@ -1,242 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2006 Junio C Hamano -# - -test_description='git rebase --merge test' - -. ./test-lib.sh - -T="A quick brown fox -jumps over the lazy dog." -for i in 1 2 3 4 5 6 7 8 9 10 -do - echo "$i $T" -done >original - -test_expect_success setup ' - git add original && - git commit -m"initial" && - git branch side && - echo "11 $T" >>original && - git commit -a -m"master updates a bit." && - - echo "12 $T" >>original && - git commit -a -m"master updates a bit more." && - - git checkout side && - (echo "0 $T" && cat original) >renamed && - git add renamed && - git update-index --force-remove original && - git commit -a -m"side renames and edits." && - - tr "[a-z]" "[A-Z]" <original >newfile && - git add newfile && - git commit -a -m"side edits further." && - git branch second-side && - - tr "[a-m]" "[A-M]" <original >newfile && - rm -f original && - git commit -a -m"side edits once again." && - - git branch test-rebase side && - git branch test-rebase-pick side && - git branch test-reference-pick side && - git branch test-conflicts side && - git checkout -b test-merge side -' - -test_expect_success 'reference merge' ' - git merge -s recursive -m "reference merge" master -' - -PRE_REBASE=$(git rev-parse test-rebase) -test_expect_success rebase ' - git checkout test-rebase && - GIT_TRACE=1 git rebase --merge master -' - -test_expect_success 'test-rebase@{1} is pre rebase' ' - test $PRE_REBASE = $(git rev-parse test-rebase@{1}) -' - -test_expect_success 'merge and rebase should match' ' - git diff-tree -r test-rebase test-merge >difference && - if test -s difference - then - cat difference - (exit 1) - else - echo happy - fi -' - -test_expect_success 'rebase the other way' ' - git reset --hard master && - git rebase --merge side -' - -test_expect_success 'rebase -Xtheirs' ' - git checkout -b conflicting master~2 && - echo "AB $T" >> original && - git commit -mconflicting original && - git rebase -Xtheirs master && - grep AB original && - ! grep 11 original -' - -test_expect_success 'rebase -Xtheirs from orphan' ' - git checkout --orphan orphan-conflicting master~2 && - echo "AB $T" >> original && - git commit -morphan-conflicting original && - git rebase -Xtheirs master && - grep AB original && - ! grep 11 original -' - -test_expect_success 'merge and rebase should match' ' - git diff-tree -r test-rebase test-merge >difference && - if test -s difference - then - cat difference - (exit 1) - else - echo happy - fi -' - -test_expect_success 'picking rebase' ' - git reset --hard side && - git rebase --merge --onto master side^^ && - mb=$(git merge-base master HEAD) && - if test "$mb" = "$(git rev-parse master)" - then - echo happy - else - git show-branch - (exit 1) - fi && - f=$(git diff-tree --name-only HEAD^ HEAD) && - g=$(git diff-tree --name-only HEAD^^ HEAD^) && - case "$f,$g" in - newfile,newfile) - echo happy ;; - *) - echo "$f" - echo "$g" - (exit 1) - esac -' - -test_expect_success 'rebase -s funny -Xopt' ' - test_when_finished "rm -fr test-bin funny.was.run" && - mkdir test-bin && - cat >test-bin/git-merge-funny <<-EOF && - #!$SHELL_PATH - case "\$1" in --opt) ;; *) exit 2 ;; esac - shift && - >funny.was.run && - exec git merge-recursive "\$@" - EOF - chmod +x test-bin/git-merge-funny && - git reset --hard && - git checkout -b test-funny master^ && - test_commit funny && - ( - PATH=./test-bin:$PATH && - git rebase -s funny -Xopt master - ) && - test -f funny.was.run -' - -test_expect_success 'rebase --skip works with two conflicts in a row' ' - git checkout second-side && - tr "[A-Z]" "[a-z]" <newfile >tmp && - mv tmp newfile && - git commit -a -m"edit conflicting with side" && - tr "[d-f]" "[D-F]" <newfile >tmp && - mv tmp newfile && - git commit -a -m"another edit conflicting with side" && - test_must_fail git rebase --merge test-conflicts && - test_must_fail git rebase --skip && - git rebase --skip -' - -test_expect_success '--reapply-cherry-picks' ' - git init repo && - - # O(1-10) -- O(1-11) -- O(0-10) master - # \ - # -- O(1-11) -- O(1-12) otherbranch - - printf "Line %d\n" $(test_seq 1 10) >repo/file.txt && - git -C repo add file.txt && - git -C repo commit -m "base commit" && - - printf "Line %d\n" $(test_seq 1 11) >repo/file.txt && - git -C repo commit -a -m "add 11" && - - printf "Line %d\n" $(test_seq 0 10) >repo/file.txt && - git -C repo commit -a -m "add 0 delete 11" && - - git -C repo checkout -b otherbranch HEAD^^ && - printf "Line %d\n" $(test_seq 1 11) >repo/file.txt && - git -C repo commit -a -m "add 11 in another branch" && - - printf "Line %d\n" $(test_seq 1 12) >repo/file.txt && - git -C repo commit -a -m "add 12 in another branch" && - - # Regular rebase fails, because the 1-11 commit is deduplicated - test_must_fail git -C repo rebase --merge master 2> err && - test_i18ngrep "error: could not apply.*add 12 in another branch" err && - git -C repo rebase --abort && - - # With --reapply-cherry-picks, it works - git -C repo rebase --merge --reapply-cherry-picks master -' - -test_expect_success '--reapply-cherry-picks refrains from reading unneeded blobs' ' - git init server && - - # O(1-10) -- O(1-11) -- O(1-12) master - # \ - # -- O(0-10) otherbranch - - printf "Line %d\n" $(test_seq 1 10) >server/file.txt && - git -C server add file.txt && - git -C server commit -m "merge base" && - - printf "Line %d\n" $(test_seq 1 11) >server/file.txt && - git -C server commit -a -m "add 11" && - - printf "Line %d\n" $(test_seq 1 12) >server/file.txt && - git -C server commit -a -m "add 12" && - - git -C server checkout -b otherbranch HEAD^^ && - printf "Line %d\n" $(test_seq 0 10) >server/file.txt && - git -C server commit -a -m "add 0" && - - test_config -C server uploadpack.allowfilter 1 && - test_config -C server uploadpack.allowanysha1inwant 1 && - - git clone --filter=blob:none "file://$(pwd)/server" client && - git -C client checkout origin/master && - git -C client checkout origin/otherbranch && - - # Sanity check to ensure that the blobs from the merge base and "add - # 11" are missing - git -C client rev-list --objects --all --missing=print >missing_list && - MERGE_BASE_BLOB=$(git -C server rev-parse master^^:file.txt) && - ADD_11_BLOB=$(git -C server rev-parse master^:file.txt) && - grep "[?]$MERGE_BASE_BLOB" missing_list && - grep "[?]$ADD_11_BLOB" missing_list && - - git -C client rebase --merge --reapply-cherry-picks origin/master && - - # The blob from the merge base had to be fetched, but not "add 11" - git -C client rev-list --objects --all --missing=print >missing_list && - ! grep "[?]$MERGE_BASE_BLOB" missing_list && - grep "[?]$ADD_11_BLOB" missing_list -' - -test_done |