-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Test pushing, pulling, and mirroring of repositories with ref namespaces. Signed-off-by: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Jamey Sharp <jamey@minilop.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Josh Triplett
authored and
Junio C Hamano
committed
Jul 21, 2011
1 parent
d49483f
commit bf7930c
Showing
1 changed file
with
85 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
#!/bin/sh | ||
|
||
test_description='fetch/push involving ref namespaces' | ||
. ./test-lib.sh | ||
|
||
test_expect_success setup ' | ||
test_tick && | ||
git init original && | ||
( | ||
cd original && | ||
echo 0 >count && | ||
git add count && | ||
test_commit 0 && | ||
echo 1 >count && | ||
git add count && | ||
test_commit 1 && | ||
git remote add pushee-namespaced "ext::git --namespace=namespace %s ../pushee" && | ||
git remote add pushee-unnamespaced ../pushee | ||
) && | ||
commit0=$(cd original && git rev-parse HEAD^) && | ||
commit1=$(cd original && git rev-parse HEAD) && | ||
git init pushee && | ||
git init puller | ||
' | ||
|
||
test_expect_success 'pushing into a repository using a ref namespace' ' | ||
( | ||
cd original && | ||
git push pushee-namespaced master && | ||
git ls-remote pushee-namespaced >actual && | ||
printf "$commit1\trefs/heads/master\n" >expected && | ||
test_cmp expected actual && | ||
git push pushee-namespaced --tags && | ||
git ls-remote pushee-namespaced >actual && | ||
printf "$commit0\trefs/tags/0\n" >>expected && | ||
printf "$commit1\trefs/tags/1\n" >>expected && | ||
test_cmp expected actual && | ||
# Verify that the GIT_NAMESPACE environment variable works as well | ||
GIT_NAMESPACE=namespace git ls-remote "ext::git %s ../pushee" >actual && | ||
test_cmp expected actual && | ||
# Verify that --namespace overrides GIT_NAMESPACE | ||
GIT_NAMESPACE=garbage git ls-remote pushee-namespaced >actual && | ||
test_cmp expected actual && | ||
# Try a namespace with no content | ||
git ls-remote "ext::git --namespace=garbage %s ../pushee" >actual && | ||
test_cmp /dev/null actual && | ||
git ls-remote pushee-unnamespaced >actual && | ||
sed -e "s|refs/|refs/namespaces/namespace/refs/|" expected >expected.unnamespaced && | ||
test_cmp expected.unnamespaced actual | ||
) | ||
' | ||
|
||
test_expect_success 'pulling from a repository using a ref namespace' ' | ||
( | ||
cd puller && | ||
git remote add -f pushee-namespaced "ext::git --namespace=namespace %s ../pushee" && | ||
git for-each-ref refs/ >actual && | ||
printf "$commit1 commit\trefs/remotes/pushee-namespaced/master\n" >expected && | ||
printf "$commit0 commit\trefs/tags/0\n" >>expected && | ||
printf "$commit1 commit\trefs/tags/1\n" >>expected && | ||
test_cmp expected actual | ||
) | ||
' | ||
|
||
# This test with clone --mirror checks for possible regressions in clone | ||
# or the machinery underneath it. It ensures that no future change | ||
# causes clone to ignore refs in refs/namespaces/*. In particular, it | ||
# protects against a regression caused by any future change to the refs | ||
# machinery that might cause it to ignore refs outside of refs/heads/* | ||
# or refs/tags/*. More generally, this test also checks the high-level | ||
# functionality of using clone --mirror to back up a set of repos hosted | ||
# in the namespaces of a single repo. | ||
test_expect_success 'mirroring a repository using a ref namespace' ' | ||
git clone --mirror pushee mirror && | ||
( | ||
cd mirror && | ||
git for-each-ref refs/ >actual && | ||
printf "$commit1 commit\trefs/namespaces/namespace/refs/heads/master\n" >expected && | ||
printf "$commit0 commit\trefs/namespaces/namespace/refs/tags/0\n" >>expected && | ||
printf "$commit1 commit\trefs/namespaces/namespace/refs/tags/1\n" >>expected && | ||
test_cmp expected actual | ||
) | ||
' | ||
|
||
test_done |