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

[PATCH 4/6] remote.c: introduce a way to have different remotes for fetch/push

From
Ramkumar Ramachandra <artagnon@gmail.com>
Date
Mar 20, 2013, 12:44 UTC
Message-ID
<1363783501-27981-5-git-send-email-artagnon@gmail.com>
In-Reply-To
<1363783501-27981-1-git-send-email-artagnon@gmail.com>

Currently, do_push() in push.c calls remote_get(), which gets the configured remote for fetching and pushing. Replace this call with a call to pushremote_get() instead, a new function that will return the remote configured specifically for pushing. This function tries to work with the string pushremote_name, before falling back to the codepath of remote_get(). This patch has no visible impact, but serves to enable future patches to introduce configuration variables to set this variable.

Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
 builtin/push.c |  2 +-
 remote.c       | 25 +++++++++++++++++++++----
 remote.h       |  1 +
 3 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/builtin/push.c b/builtin/push.c
index 42b129d..d447a80 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -322,7 +322,7 @@ static int push_with_options(struct transport *transport, int flags)
 static int do_push(const char *repo, int flags)
 {
 	int i, errs;
-	struct remote *remote = remote_get(repo);
+	struct remote *remote = pushremote_get(repo);
 	const char **url;
 	int url_nr;
 
diff --git a/remote.c b/remote.c
index 45b69d6..cf7a65d 100644
--- a/remote.c
+++ b/remote.c
@@ -48,6 +48,7 @@ static int branches_nr;
 
 static struct branch *current_branch;
 static const char *default_remote_name;
+static const char *pushremote_name;
 static int explicit_default_remote_name;
 
 static struct rewrites rewrites;
@@ -669,17 +670,21 @@ static int valid_remote_nick(const char *name)
 	return !strchr(name, '/'); /* no slash */
 }
 
-struct remote *remote_get(const char *name)
+static struct remote *remote_get_1(const char *name, const char *pushremote_name)
 {
 	struct remote *ret;
 	int name_given = 0;
 
-	read_config();
 	if (name)
 		name_given = 1;
 	else {
-		name = default_remote_name;
-		name_given = explicit_default_remote_name;
+		if (pushremote_name) {
+			name = pushremote_name;
+			name_given = 1;
+		} else {
+			name = default_remote_name;
+			name_given = explicit_default_remote_name;
+		}
 	}
 
 	ret = make_remote(name, 0);
@@ -698,6 +703,18 @@ struct remote *remote_get(const char *name)
 	return ret;
 }
 
+struct remote *remote_get(const char *name)
+{
+	read_config();
+	return remote_get_1(name, NULL);
+}
+
+struct remote *pushremote_get(const char *name)
+{
+	read_config();
+	return remote_get_1(name, pushremote_name);
+}
+
 int remote_is_configured(const char *name)
 {
 	int i;
diff --git a/remote.h b/remote.h
index 251d8fd..99a437f 100644
--- a/remote.h
+++ b/remote.h
@@ -51,6 +51,7 @@ struct remote {
 };
 
 struct remote *remote_get(const char *name);
+struct remote *pushremote_get(const char *name);
 int remote_is_configured(const char *name);
 
 typedef int each_remote_fn(struct remote *remote, void *priv);
-- 
1.8.2
Previous: Jonathan NiederNext: Jonathan Nieder
Message 16 of 33 in “Support triangular workflows”
  1. 0/6 Support triangular workflowsRamkumar Ramachandra, Mar 20, 2013
  2. 1/6 remote.c: simplify a bit of code using git_config_string()Ramkumar Ramachandra, Mar 20, 2013
  3. Jonathan NiederMar 20, 2013
  4. Ramkumar RamachandraMar 20, 2013
  5. 2/6 t5516 (fetch-push): update test descriptionRamkumar Ramachandra, Mar 20, 2013
  6. Jonathan NiederMar 20, 2013
  7. Ramkumar RamachandraMar 20, 2013
  8. Jonathan NiederMar 20, 2013
  9. 3/6 t5516 (fetch-push): introduce mk_test_with_name()Ramkumar Ramachandra, Mar 20, 2013
  10. Jonathan NiederMar 20, 2013
  11. Ramkumar RamachandraMar 20, 2013
  12. Jonathan NiederMar 20, 2013
  13. Jeff KingMar 20, 2013
  14. Junio C HamanoMar 20, 2013
  15. Jonathan NiederMar 20, 2013
  16. 4/6 remote.c: introduce a way to have different remotes for fetch/pushRamkumar Ramachandra, Mar 20, 2013
  17. Jonathan NiederMar 20, 2013
  18. Junio C HamanoMar 20, 2013
  19. Ramkumar RamachandraMar 20, 2013
  20. Junio C HamanoMar 20, 2013
  21. 5/6 remote.c: introduce remote.pushdefaultRamkumar Ramachandra, Mar 20, 2013
  22. Jonathan NiederMar 20, 2013
  23. Junio C HamanoMar 20, 2013
  24. Ramkumar RamachandraMar 20, 2013
  25. 6/6 remote.c: introduce branch.<name>.pushremoteRamkumar Ramachandra, Mar 20, 2013
  26. Tay Ray ChuanMar 20, 2013
  27. Ramkumar RamachandraMar 20, 2013
  28. Tay Ray ChuanMar 20, 2013
  29. Ramkumar RamachandraMar 22, 2013
  30. Philip OakleyMar 20, 2013
  31. Ramkumar RamachandraMar 22, 2013
  32. Junio C HamanoMar 22, 2013
  33. Ramkumar RamachandraMar 23, 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.