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

[PATCH 3/4] remote.c: introduce remote.pushdefault

From
Ramkumar Ramachandra <artagnon@gmail.com>
Date
Mar 18, 2013, 13:16 UTC
Message-ID
<1363612575-7340-4-git-send-email-artagnon@gmail.com>
In-Reply-To
<1363612575-7340-1-git-send-email-artagnon@gmail.com>

This new configuration variable defines the default remote to push to, and overrides `branch.<name>.remote` for all branches. It is useful in the typical triangular-workflow setup, where the remote you're fetching from is different from the remote you're pushing to.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
 Documentation/config.txt | 13 ++++++++++---
 remote.c                 |  4 ++++
 2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index bbba728..8ddd0fd 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -723,9 +723,12 @@ branch.autosetuprebase::
 	This option defaults to never.
 
 branch.<name>.remote::
-	When in branch <name>, it tells 'git fetch' and 'git push' which
-	remote to fetch from/push to.  It defaults to `origin` if no remote is
-	configured. `origin` is also used if you are not on any branch.
+	When on branch <name>, it tells 'git fetch' and 'git push'
+	which remote to fetch from/push to.  The remote to push to
+	may be overriden with `remote.pushdefault` (for all branches).
+	If no remote is configured, or if you are not on any branch,
+	it defaults to `origin` for fetching and `remote.pushdefault`
+	for pushing.
 
 branch.<name>.merge::
 	Defines, together with branch.<name>.remote, the upstream branch
@@ -1894,6 +1897,10 @@ receive.updateserverinfo::
 	If set to true, git-receive-pack will run git-update-server-info
 	after receiving data from git-push and updating refs.
 
+remote.pushdefault::
+	The remote to push to by default.  Overrides
+	`branch.<name>.remote` for all branches.
+
 remote.<name>.url::
 	The URL of a remote repository.  See linkgit:git-fetch[1] or
 	linkgit:git-push[1].
diff --git a/remote.c b/remote.c
index 4704404..987edc4 100644
--- a/remote.c
+++ b/remote.c
@@ -350,6 +350,10 @@ static int handle_config(const char *key, const char *value, void *cb)
 	const char *subkey;
 	struct remote *remote;
 	struct branch *branch;
+	if (!prefixcmp(key, "remote.")) {
+		if (!strcmp(key + 7, "pushdefault"))
+			git_config_string(&pushremote_name, key, value);
+	}
 	if (!prefixcmp(key, "branch.")) {
 		name = key + 7;
 		subkey = strrchr(name, '.');
-- 
1.8.2
Previous: Eric SunshineNext: Eric Sunshine
Message 9 of 16 in “Support triangular workflows”
  1. 0/4 Support triangular workflowsRamkumar Ramachandra, Mar 18, 2013
  2. 1/4 remote.c: simply a bit of code using git_config_string()Ramkumar Ramachandra, Mar 18, 2013
  3. Eric SunshineMar 18, 2013
  4. 2/4 remote.c: introduce a way to have different remotes for fetch/ pushRamkumar Ramachandra, Mar 18, 2013
  5. Jeff KingMar 18, 2013
  6. Ramkumar RamachandraMar 18, 2013
  7. Jeff KingMar 18, 2013
  8. Eric SunshineMar 18, 2013
  9. 3/4 remote.c: introduce remote.pushdefaultRamkumar Ramachandra, Mar 18, 2013
  10. Eric SunshineMar 18, 2013
  11. 4/4 remote.c: introduce branch.<name>.pushremoteRamkumar Ramachandra, Mar 18, 2013
  12. Eric SunshineMar 18, 2013
  13. Jeff KingMar 18, 2013
  14. Ramkumar RamachandraMar 18, 2013
  15. Jeff KingMar 18, 2013
  16. Marc BranchaudMar 18, 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.