git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] remote.<name>.pushurl does not consider aliases when pushing

From
Rob Hoelz <rob@hoelz.ro>
Date
Mar 17, 2013, 21:40 UTC
Message-ID
<20130317224002.366f54f7@hoelz.ro>

Hi everyone! I found a bug in Git today and wrote up a fix; I did my best to conform to the rules layed out in Documentation/SubmittingPatches, but please let me know if I need to change anything to get my work merged. =) I have CC'ed Josh Triplet, as he was the last one to touch the line I modified. I hope my commit messages explain the problem I encountered well enough; if not, I can always go back and amend them.

Patches follow.
-Rob
>From 5007b11e86c0835807632cb41e6cfa75ce9a1aa1 Mon Sep 17 00:00:00 2001
From: Rob Hoelz <rob@hoelz.ro>
Date: Sun, 17 Mar 2013 21:49:20 +0100
Subject: [PATCH 1/2] Add test for pushInsteadOf + pushurl

git push currently doesn't consider pushInsteadOf when using pushurl; this test tests that.

Signed-off-by: Rob Hoelz <rob@hoelz.ro>
---
 t/t5500-push-pushurl.sh | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)
 create mode 100644 t/t5500-push-pushurl.sh
diff --git a/t/t5500-push-pushurl.sh b/t/t5500-push-pushurl.sh
new file mode 100644
index 0000000..74d4ff6
--- /dev/null
+++ b/t/t5500-push-pushurl.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# Copyright (c) 2013 Rob Hoelz
+#
+
+test_description='Test that remote.<name>.pushurl uses pushInsteadOf'
+. ./test-lib.sh
+
+wd=$(pwd)
+test_expect_success 'setup test repositories' '
+	mkdir ro &&
+	mkdir rw &&
+
+	git init --bare ro/repo &&
+	git init --bare rw/repo &&
+	git init test-repo
+'
+
+test_expect_success 'setup remote config' "
+	cd test-repo &&
+	git config 'url.file://$wd/ro/.insteadOf' herero: &&
+	git config 'url.file://$wd/rw/.pushInsteadOf' hererw: &&
+	git remote add origin herero:repo &&
+	git config remote.origin.pushurl hererw:repo
+"
+
+test_expect_success 'test commit and push' '
+	test_commit one &&
+	git push origin master:master
+'
+
+test_expect_success 'check for commits in rw repo' '
+	cd ../rw/repo &&
+	git log --pretty=oneline | grep -q .
+'
+
+test_done
-- 
1.8.2

>From 0cbd1aab6bdc0c2f8893ed8b9a8e3eb0126917d1 Mon Sep 17 00:00:00 2001
From: Rob Hoelz <rob@hoelz.ro>
Date: Sun, 17 Mar 2013 16:34:35 +0100
Subject: [PATCH 2/2] push: Alias pushurl from push rewrites

If you use pushurl with an alias that has a pushInsteadOf configuration
value, Git does not take advantage of it.  For example:

[url "git://github.com/"]
    insteadOf = github:
[url "git://github.com/myuser/"]
    insteadOf = mygithub:
[url "git@github.com:myuser/"]
    pushInsteadOf = mygithub:
[remote "origin"]
    url     = github:organization/project
    pushurl = mygithub:project

This commit fixes that.

Signed-off-by: Rob Hoelz <rob@hoelz.ro>
---
 remote.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/remote.c b/remote.c
index ca1f8f2..de7a915 100644
--- a/remote.c
+++ b/remote.c
@@ -465,7 +465,7 @@ static void alias_all_urls(void)
 		if (!remotes[i])
 			continue;
 		for (j = 0; j < remotes[i]->pushurl_nr; j++) {
-			remotes[i]->pushurl[j] = alias_url(remotes[i]->pushurl[j], &rewrites);
+			remotes[i]->pushurl[j] = alias_url(remotes[i]->pushurl[j], &rewrites_push);
 		}
 		add_pushurl_aliases = remotes[i]->pushurl_nr == 0;
 		for (j = 0; j < remotes[i]->url_nr; j++) {
-- 
1.8.2
Next: Junio C Hamano
Message 1 of 3 in “remote.<name>.pushurl does not consider aliases when pushing”
  1. remote.<name>.pushurl does not consider aliases when pushingRob Hoelz, Mar 17, 2013
  2. Junio C HamanoMar 17, 2013
  3. Rob HoelzMar 17, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.