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/t9164-git-svn-dcommit-concurrent.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/t9164-git-svn-dcommit-concurrent.sh')
-rwxr-xr-x | third_party/git/t/t9164-git-svn-dcommit-concurrent.sh | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/third_party/git/t/t9164-git-svn-dcommit-concurrent.sh b/third_party/git/t/t9164-git-svn-dcommit-concurrent.sh deleted file mode 100755 index 8466269bf50b..000000000000 --- a/third_party/git/t/t9164-git-svn-dcommit-concurrent.sh +++ /dev/null @@ -1,216 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2012 Robert Luberda -# - -test_description='concurrent git svn dcommit' -. ./lib-git-svn.sh - - - -test_expect_success 'setup svn repository' ' - svn_cmd checkout "$svnrepo" work.svn && - ( - cd work.svn && - echo >file && echo > auto_updated_file && - svn_cmd add file auto_updated_file && - svn_cmd commit -m "initial commit" - ) && - svn_cmd checkout "$svnrepo" work-auto-commits.svn -' -N=0 -next_N() -{ - N=$(( $N + 1 )) -} - -# Setup SVN repository hooks to emulate SVN failures or concurrent commits -# The function adds -# either pre-commit hook, which causes SVN commit given in second argument -# to fail -# or post-commit hook, which creates a new commit (a new line added to -# auto_updated_file) after given SVN commit -# The first argument contains a type of the hook -# The second argument contains a number (not SVN revision) of commit -# the hook should be applied for (each time the hook is run, the given -# number is decreased by one until it gets 0, in which case the hook -# will execute its real action) -setup_hook() -{ - hook_type="$1" # "pre-commit" or "post-commit" - skip_revs="$2" - [ "$hook_type" = "pre-commit" ] || - [ "$hook_type" = "post-commit" ] || - { echo "ERROR: invalid argument ($hook_type)" \ - "passed to setup_hook" >&2 ; return 1; } - echo "cnt=$skip_revs" > "$hook_type-counter" - rm -f "$rawsvnrepo/hooks/"*-commit # drop previous hooks - hook="$rawsvnrepo/hooks/$hook_type" - cat > "$hook" <<- 'EOF1' - #!/bin/sh - set -e - cd "$1/.." # "$1" is repository location - exec >> svn-hook.log 2>&1 - hook="$(basename "$0")" - echo "*** Executing $hook $@" - set -x - . ./$hook-counter - cnt="$(($cnt - 1))" - echo "cnt=$cnt" > ./$hook-counter - [ "$cnt" = "0" ] || exit 0 -EOF1 - if [ "$hook_type" = "pre-commit" ]; then - echo "echo 'commit disallowed' >&2; exit 1" >>"$hook" - else - echo "PATH=\"$PATH\"; export PATH" >>"$hook" - echo "svnconf=\"$svnconf\"" >>"$hook" - cat >>"$hook" <<- 'EOF2' - cd work-auto-commits.svn - svn up --config-dir "$svnconf" - echo "$$" >> auto_updated_file - svn commit --config-dir "$svnconf" \ - -m "auto-committing concurrent change" - exit 0 -EOF2 - fi - chmod 755 "$hook" -} - -check_contents() -{ - gitdir="$1" - (cd ../work.svn && svn_cmd up) && - test_cmp file ../work.svn/file && - test_cmp auto_updated_file ../work.svn/auto_updated_file -} - -test_expect_success 'check if post-commit hook creates a concurrent commit' ' - setup_hook post-commit 1 && - ( - cd work.svn && - cp auto_updated_file au_file_saved && - echo 1 >> file && - svn_cmd commit -m "changing file" && - svn_cmd up && - ! test_cmp auto_updated_file au_file_saved - ) -' - -test_expect_success 'check if pre-commit hook fails' ' - setup_hook pre-commit 2 && - ( - cd work.svn && - echo 2 >> file && - svn_cmd commit -m "changing file once again" && - echo 3 >> file && - ! svn_cmd commit -m "this commit should fail" && - svn_cmd revert file - ) -' - -test_expect_success 'dcommit error handling' ' - setup_hook pre-commit 2 && - next_N && git svn clone "$svnrepo" work$N.git && - ( - cd work$N.git && - echo 1 >> file && git commit -am "commit change $N.1" && - echo 2 >> file && git commit -am "commit change $N.2" && - echo 3 >> file && git commit -am "commit change $N.3" && - # should fail to dcommit 2nd and 3rd change - # but still should leave the repository in reasonable state - test_must_fail git svn dcommit && - git update-index --refresh && - git show HEAD~2 | grep -q git-svn-id && - ! git show HEAD~1 | grep -q git-svn-id && - ! git show HEAD | grep -q git-svn-id - ) -' - -test_expect_success 'dcommit concurrent change in non-changed file' ' - setup_hook post-commit 2 && - next_N && git svn clone "$svnrepo" work$N.git && - ( - cd work$N.git && - echo 1 >> file && git commit -am "commit change $N.1" && - echo 2 >> file && git commit -am "commit change $N.2" && - echo 3 >> file && git commit -am "commit change $N.3" && - # should rebase and leave the repository in reasonable state - git svn dcommit && - git update-index --refresh && - check_contents && - git show HEAD~3 | grep -q git-svn-id && - git show HEAD~2 | grep -q git-svn-id && - git show HEAD~1 | grep -q auto-committing && - git show HEAD | grep -q git-svn-id - ) -' - -# An utility function used in the following test -delete_first_line() -{ - file="$1" && - sed 1d < "$file" > "${file}.tmp" && - rm "$file" && - mv "${file}.tmp" "$file" -} - -test_expect_success 'dcommit concurrent non-conflicting change' ' - setup_hook post-commit 2 && - next_N && git svn clone "$svnrepo" work$N.git && - ( - cd work$N.git && - cat file >> auto_updated_file && - git commit -am "commit change $N.1" && - delete_first_line auto_updated_file && - git commit -am "commit change $N.2" && - delete_first_line auto_updated_file && - git commit -am "commit change $N.3" && - # should rebase and leave the repository in reasonable state - git svn dcommit && - git update-index --refresh && - check_contents && - git show HEAD~3 | grep -q git-svn-id && - git show HEAD~2 | grep -q git-svn-id && - git show HEAD~1 | grep -q auto-committing && - git show HEAD | grep -q git-svn-id - ) -' - -test_expect_success 'dcommit --no-rebase concurrent non-conflicting change' ' - setup_hook post-commit 2 && - next_N && git svn clone "$svnrepo" work$N.git && - ( - cd work$N.git && - cat file >> auto_updated_file && - git commit -am "commit change $N.1" && - delete_first_line auto_updated_file && - git commit -am "commit change $N.2" && - delete_first_line auto_updated_file && - git commit -am "commit change $N.3" && - # should fail as rebase is needed - test_must_fail git svn dcommit --no-rebase && - # but should leave HEAD unchanged - git update-index --refresh && - ! git show HEAD~2 | grep -q git-svn-id && - ! git show HEAD~1 | grep -q git-svn-id && - ! git show HEAD | grep -q git-svn-id - ) -' - -test_expect_success 'dcommit fails on concurrent conflicting change' ' - setup_hook post-commit 1 && - next_N && git svn clone "$svnrepo" work$N.git && - ( - cd work$N.git && - echo a >> file && - git commit -am "commit change $N.1" && - echo b >> auto_updated_file && - git commit -am "commit change $N.2" && - echo c >> auto_updated_file && - git commit -am "commit change $N.3" && - test_must_fail git svn dcommit && # rebase should fail - test_must_fail git update-index --refresh - ) -' - -test_done |