Re: [PATCH v3] receive-pack: Create a HEAD ref for ref namespace
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 5, 2015, 17:19 UTC
- Message-ID
- <xmqqh9qmrs2j.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <1433523731-25172-1-git-send-email-johannes@kyriasis.com>
Johannes Löthberg <johannes@kyriasis.com> writes:
Show 10 quoted lines
> diff --git a/t/t5509-fetch-push-namespaces.sh b/t/t5509-fetch-push-namespaces.sh > index cc0b31f..7bc3a1f 100755 > --- a/t/t5509-fetch-push-namespaces.sh > +++ b/t/t5509-fetch-push-namespaces.sh > @@ -1,6 +1,7 @@ > #!/bin/sh > > -test_description='fetch/push involving ref namespaces' > +test_description='fetch/push/clone involving ref namespaces' > +
OK ;-)
Show 33 quoted lines
> . ./test-lib.sh > > test_expect_success setup ' > @@ -82,4 +83,50 @@ test_expect_success 'mirroring a repository using a ref namespace' ' > ) > ' > > +test_expect_success 'cloning from ref namespace' ' > + rm -rf initial bare clone && > + git init initial && > + git init --bare bare && > + ( > + cd initial && > + echo "commit one" >file && > + git add file && > + git commit -m "commit one" && > + git push ../bare master && > + > + echo refs/heads/master >expect && > + git -C ../bare symbolic-ref HEAD >actual && > + test_cmp expect actual && > + > + git rev-parse HEAD >expect && > + git -C ../bare rev-parse HEAD >actual && > + test_cmp expect actual && > + > + echo "commit two" >>file && > + git add file && > + git commit -m "commit two" && > + GIT_NAMESPACE=new_namespace git push ../bare master && > + > + echo "ref: refs/namespaces/new_namespace/refs/heads/master" >expect && > + test_cmp expect ../bare/refs/namespaces/new_namespace/HEAD &&
Use "symbolic-ref refs/namespaces/new_namespace/HEAD"; HEAD is not required to be expressed as a textual symref.
Show 9 quoted lines
> + > + ( > + printf "%s commit\t%s\n" $(git rev-parse master^) \ > + refs/heads/master && > + printf "%s commit\t%s\n" $(git rev-parse master) \ > + refs/namespaces/new_namespace/HEAD && > + printf "%s commit\t%s\n" $(git rev-parse master) \ > + refs/namespaces/new_namespace/refs/heads/master > + ) >expect &&
Use of 'printf' is clever and I like it. Have you considered letting it do the iteration as well? I.e.
printf "%s commit\t%s\n" \
one two \
three four \
five six \
>expect &&might be easier to read.
Show 7 quoted lines
> + git -C ../bare for-each-ref refs/ >actual && > + test_cmp expect actual > + ) && > + GIT_NAMESPACE=new_namespace git clone bare clone && > + ( > + cd clone && > + git show
We can accept any random commit at HEAD as long as it exists at this point? Don't we need to make sure that a ref whose tip is still "one" is not propagated to this new clone?
Show 5 quoted lines
> + ) > +' > + > + > test_done