Browse Source
"git fetch --mirror" and fetch that uses other forms of refspec with wildcard used to attempt to update a symbolic ref that match the wildcard on the receiving end, which made little sense (the real ref that is pointed at by the symbolic ref would be updated anyway). Symbolic refs no longer are affected by such a fetch. * jc/fetch-ignore-symref: fetch: ignore wildcarded refspecs that update local symbolic refsmaint
Junio C Hamano
12 years ago
2 changed files with 54 additions and 1 deletions
@ -0,0 +1,42 @@
@@ -0,0 +1,42 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='avoiding conflicting update thru symref aliasing' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success 'setup' ' |
||||
test_commit one && |
||||
git clone . src && |
||||
git clone src dst1 && |
||||
git clone src dst2 && |
||||
test_commit two && |
||||
( cd src && git pull ) |
||||
' |
||||
|
||||
test_expect_success 'push' ' |
||||
( |
||||
cd src && |
||||
git push ../dst1 "refs/remotes/*:refs/remotes/*" |
||||
) && |
||||
git ls-remote src "refs/remotes/*" >expect && |
||||
git ls-remote dst1 "refs/remotes/*" >actual && |
||||
test_cmp expect actual && |
||||
( cd src && git symbolic-ref refs/remotes/origin/HEAD ) >expect && |
||||
( cd dst1 && git symbolic-ref refs/remotes/origin/HEAD ) >actual && |
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_expect_success 'fetch' ' |
||||
( |
||||
cd dst2 && |
||||
git fetch ../src "refs/remotes/*:refs/remotes/*" |
||||
) && |
||||
git ls-remote src "refs/remotes/*" >expect && |
||||
git ls-remote dst2 "refs/remotes/*" >actual && |
||||
test_cmp expect actual && |
||||
( cd src && git symbolic-ref refs/remotes/origin/HEAD ) >expect && |
||||
( cd dst2 && git symbolic-ref refs/remotes/origin/HEAD ) >actual && |
||||
test_cmp expect actual |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue