Merge branch 'dt/refs-bisection'
Move the refs used during a "git bisect" session to per-worktree hierarchy refs/worktree/* so that independent bisect sessions can be done in different worktrees. * dt/refs-bisection: refs: make refs/bisect/* per-worktree path: optimize common dir checking refs: clean up common_list
This commit is contained in:
@ -266,15 +266,21 @@ test_expect_success 'setup common repository' 'git --git-dir=bar init'
|
||||
test_git_path GIT_COMMON_DIR=bar index .git/index
|
||||
test_git_path GIT_COMMON_DIR=bar HEAD .git/HEAD
|
||||
test_git_path GIT_COMMON_DIR=bar logs/HEAD .git/logs/HEAD
|
||||
test_git_path GIT_COMMON_DIR=bar logs/refs/bisect/foo .git/logs/refs/bisect/foo
|
||||
test_git_path GIT_COMMON_DIR=bar logs/refs/bisec/foo bar/logs/refs/bisec/foo
|
||||
test_git_path GIT_COMMON_DIR=bar logs/refs/bisec bar/logs/refs/bisec
|
||||
test_git_path GIT_COMMON_DIR=bar logs/refs/bisectfoo bar/logs/refs/bisectfoo
|
||||
test_git_path GIT_COMMON_DIR=bar objects bar/objects
|
||||
test_git_path GIT_COMMON_DIR=bar objects/bar bar/objects/bar
|
||||
test_git_path GIT_COMMON_DIR=bar info/exclude bar/info/exclude
|
||||
test_git_path GIT_COMMON_DIR=bar info/grafts bar/info/grafts
|
||||
test_git_path GIT_COMMON_DIR=bar info/sparse-checkout .git/info/sparse-checkout
|
||||
test_git_path GIT_COMMON_DIR=bar info//sparse-checkout .git/info//sparse-checkout
|
||||
test_git_path GIT_COMMON_DIR=bar remotes/bar bar/remotes/bar
|
||||
test_git_path GIT_COMMON_DIR=bar branches/bar bar/branches/bar
|
||||
test_git_path GIT_COMMON_DIR=bar logs/refs/heads/master bar/logs/refs/heads/master
|
||||
test_git_path GIT_COMMON_DIR=bar refs/heads/master bar/refs/heads/master
|
||||
test_git_path GIT_COMMON_DIR=bar refs/bisect/foo .git/refs/bisect/foo
|
||||
test_git_path GIT_COMMON_DIR=bar hooks/me bar/hooks/me
|
||||
test_git_path GIT_COMMON_DIR=bar config bar/config
|
||||
test_git_path GIT_COMMON_DIR=bar packed-refs bar/packed-refs
|
||||
|
@ -1130,4 +1130,23 @@ test_expect_success ULIMIT_FILE_DESCRIPTORS 'large transaction deleting branches
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'handle per-worktree refs in refs/bisect' '
|
||||
git commit --allow-empty -m "initial commit" &&
|
||||
git worktree add -b branch worktree &&
|
||||
(
|
||||
cd worktree &&
|
||||
git commit --allow-empty -m "test commit" &&
|
||||
git for-each-ref >for-each-ref.out &&
|
||||
! grep refs/bisect for-each-ref.out &&
|
||||
git update-ref refs/bisect/something HEAD &&
|
||||
git rev-parse refs/bisect/something >../worktree-head &&
|
||||
git for-each-ref | grep refs/bisect/something
|
||||
) &&
|
||||
test_path_is_missing .git/refs/bisect &&
|
||||
test_must_fail git rev-parse refs/bisect/something &&
|
||||
git update-ref refs/bisect/something HEAD &&
|
||||
git rev-parse refs/bisect/something >main-head &&
|
||||
! test_cmp main-head worktree-head
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -160,6 +160,13 @@ test_expect_success 'pack ref directly below refs/' '
|
||||
test_path_is_missing .git/refs/top
|
||||
'
|
||||
|
||||
test_expect_success 'do not pack ref in refs/bisect' '
|
||||
git update-ref refs/bisect/local HEAD &&
|
||||
git pack-refs --all --prune &&
|
||||
! grep refs/bisect/local .git/packed-refs >/dev/null &&
|
||||
test_path_is_file .git/refs/bisect/local
|
||||
'
|
||||
|
||||
test_expect_success 'disable reflogs' '
|
||||
git config core.logallrefupdates false &&
|
||||
rm -rf .git/logs
|
||||
|
Reference in New Issue
Block a user