|  | #!/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 |