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 [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Jardel Weyrich [off-list ref] writes:
quoted
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:
quoted
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 <redacted>
Date: Fri, 11 Jan 2013 23:04:16 -0800
Subject: [PATCH] t5505: adding one pushurl from jweyrich
Signed-off-by: Junio C Hamano <redacted>
---
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