Step 1: jweyrich@pharao:test_clone1 [* master]$ git remote -v origin /Volumes/sandbox/test (fetch) origin /Volumes/sandbox/test (push) jweyrich@pharao:test_clone1 [* master]$ git config -l | grep '^remote\.origin' remote.origin.url=/Volumes/sandbox/test remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* Step 3: jweyrich@pharao:test_clone1 [* master]$ git remote set-url --add --push origin /Volumes/sandbox/test_clone2 origin /Volumes/sandbox/test (fetch) origin /Volumes/sandbox/test_clone2/ (push) jweyrich@pharao:test_clone1 [* master]$ git config -l | grep '^remote\.origin' remote.origin.url=/Volumes/sandbox/test remote.origin.fetch=+refs/heads/*:refs/remotes/origin/* remote.origin.pushurl=/Volumes/sandbox/test_clone2/ After that, if I do a commit in test_clone1 and try to push to origin, it pushes only to the test_clone2 rather than pushing to both test and test_clone2 (it's a bare repo, sorry for using a misleading name). Is `remote.<remote_name>.pushurl` required for the primary URL as well? If not, then git-push is not handling that information as it should. On Sat, Jan 12, 2013 at 5:10 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Jardel Weyrich <jweyrich@xxxxxxxxx> writes: > >> I believe `remote set-url --add --push` has a bug. Performed tests >> with v1.8.0.1 and v1.8.1 (Mac OS X). >> >> Quoting the relevant part of the documentation: >> >>> set-url >>> Changes URL remote points to. Sets first URL remote points to matching regex <oldurl> (first URL if no <oldurl> is given) to <newurl>. If <oldurl> doesn’t match any URL, error occurs and nothing is changed. >>> >>> With --push, push URLs are manipulated instead of fetch URLs. >>> With --add, instead of changing some URL, new URL is added. >>> With --delete, instead of changing some URL, all URLs matching regex <url> are deleted. Trying to delete all non-push URLs is an error. >> >> Here are some steps to reproduce: >> >> 1. Show the remote URLs >> >> jweyrich@pharao:test_clone1 [* master]$ git remote -v >> origin /Volumes/sandbox/test (fetch) >> origin /Volumes/sandbox/test (push) >> >> 2. Add a new push URL for origin >> >> jweyrich@pharao:test_clone1 [* master]$ git remote set-url --add --push origin \ >> /Volumes/sandbox/test_clone2 >> >> 3. Check what happened >> >> jweyrich@pharao:test_clone1 [* master]$ git remote -v >> origin /Volumes/sandbox/test (fetch) >> origin /Volumes/sandbox/test_clone2 (push) > > The original pushurl was replaced with the additional one, instead > of being left and the new one getting added. That looks certainly > wrong. > > However, the result of applying the attached patch (either to > v1.7.12 or v1.8.1) still passes the test and I do not think it is > doing anything differently from what you described above. > > What do you get from > > git config -l | grep '^remote\.origin' > > in steps 1. and 3. in your procedure? This question is trying to > tell if your bug is in "git remote -v" or in "git remote set-url". > > -- >8 -- > From 0f6cbc67db926e97707ae732b02e790b4604508e Mon Sep 17 00:00:00 2001 > From: Junio C Hamano <gitster@xxxxxxxxx> > Date: Fri, 11 Jan 2013 23:04:16 -0800 > Subject: [PATCH] t5505: adding one pushurl from jweyrich > > Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> > --- > t/t5505-remote.sh | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh > index c03ffdd..b31c5bb 100755 > --- a/t/t5505-remote.sh > +++ b/t/t5505-remote.sh > @@ -901,6 +901,25 @@ test_expect_success 'remote set-url --push --add aaa' ' > cmp expect actual > ' > > +test_expect_success 'remote set-url --push --add' ' > + git config remote.jweyrich.url /Volumes/sandbox/test && > + git config remote.jweyrich.pushurl /Volumes/sandbox/test && > + git config remote.jweyrich.fetch "refs/heads/*:refs/remotes/jweyrich/*" && > + > + added=/Volumes/sandbox/test_clone2 && > + { > + git config -l | grep "^remote\.jweyrich\." && > + echo "remote.jweyrich.pushurl=$added" > + } | sort >expect && > + > + git remote set-url --add --push jweyrich "$added" && > + git config -l | grep "^remote\.jweyrich\." | sort >actual && > + > + test_cmp expect actual && > + > + git remote -v | grep "^jweyrich" # this is just for debugging > +' > + > test_expect_success 'remote set-url --push bar aaa' ' > git remote set-url --push someremote bar aaa && > echo foo >expect && > -- > 1.8.1.421.g6236851 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html