Merge branch 'bf/set-head-symref'
When "git fetch $remote" notices that refs/remotes/$remote/HEAD is missing and discovers what branch the other side points with its HEAD, refs/remotes/$remote/HEAD is updated to point to it. * bf/set-head-symref: fetch set_head: handle mirrored bare repositories fetch: set remote/HEAD if it does not exist refs: add create_only option to refs_update_symref_extended refs: add TRANSACTION_CREATE_EXISTS error remote set-head: better output for --auto remote set-head: refactor for readability refs: atomically record overwritten ref in update_symref refs: standardize output of refs_read_symbolic_ref t/t5505-remote: test failure of set-head t/t5505-remote: set default branch to main
This commit is contained in:
@ -74,6 +74,30 @@ test_expect_success "fetch test for-merge" '
|
||||
cut -f -2 .git/FETCH_HEAD >actual &&
|
||||
test_cmp expected actual'
|
||||
|
||||
test_expect_success "fetch test remote HEAD" '
|
||||
cd "$D" &&
|
||||
cd two &&
|
||||
git fetch &&
|
||||
git rev-parse --verify refs/remotes/origin/HEAD &&
|
||||
git rev-parse --verify refs/remotes/origin/main &&
|
||||
head=$(git rev-parse refs/remotes/origin/HEAD) &&
|
||||
branch=$(git rev-parse refs/remotes/origin/main) &&
|
||||
test "z$head" = "z$branch"'
|
||||
|
||||
test_expect_success "fetch test remote HEAD change" '
|
||||
cd "$D" &&
|
||||
cd two &&
|
||||
git switch -c other &&
|
||||
git push -u origin other &&
|
||||
git rev-parse --verify refs/remotes/origin/HEAD &&
|
||||
git rev-parse --verify refs/remotes/origin/main &&
|
||||
git rev-parse --verify refs/remotes/origin/other &&
|
||||
git remote set-head origin other &&
|
||||
git fetch &&
|
||||
head=$(git rev-parse refs/remotes/origin/HEAD) &&
|
||||
branch=$(git rev-parse refs/remotes/origin/other) &&
|
||||
test "z$head" = "z$branch"'
|
||||
|
||||
test_expect_success 'fetch --prune on its own works as expected' '
|
||||
cd "$D" &&
|
||||
git clone . prune &&
|
||||
|
Reference in New Issue
Block a user