From: Ramkumar Ramachandra <artagnon@gmail.com>
To: Git List <git@vger.kernel.org>
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>
Subject: [PATCH 2/4] remote.c: introduce a way to have different remotes for fetch/ push
Date: Mon, 18 Mar 2013 18:46:13 +0530 [thread overview]
Message-ID: <1363612575-7340-3-git-send-email-artagnon@gmail.com> (raw)
In-Reply-To: <1363612575-7340-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 | 49 ++++++++++++++++++++++++++++++++++++-------------
remote.h | 1 +
3 files changed, 38 insertions(+), 14 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..4704404 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,20 +670,9 @@ 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, int name_given)
{
- 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;
- }
-
- ret = make_remote(name, 0);
+ struct remote *ret = make_remote(name, 0);
if (valid_remote_nick(name)) {
if (!valid_remote(ret))
read_remotes_file(ret);
@@ -698,6 +688,39 @@ struct remote *remote_get(const char *name)
return ret;
}
+struct remote *remote_get(const char *name)
+{
+ int name_given = 0;
+
+ read_config();
+ if (name)
+ name_given = 1;
+ else {
+ name = default_remote_name;
+ name_given = explicit_default_remote_name;
+ }
+ return remote_get_1(name, name_given);
+}
+
+struct remote *pushremote_get(const char *name)
+{
+ int name_given = 0;
+
+ read_config();
+ if (name)
+ name_given = 1;
+ else {
+ if (pushremote_name) {
+ name = pushremote_name;
+ name_given = 1;
+ } else {
+ name = default_remote_name;
+ name_given = explicit_default_remote_name;
+ }
+ }
+ return remote_get_1(name, name_given);
+}
+
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
next prev parent reply other threads:[~2013-03-18 13:20 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-18 13:16 [PATCH 0/4] Support triangular workflows Ramkumar Ramachandra
2013-03-18 13:16 ` [PATCH 1/4] remote.c: simply a bit of code using git_config_string() Ramkumar Ramachandra
2013-03-18 22:14 ` Eric Sunshine
2013-03-18 13:16 ` Ramkumar Ramachandra [this message]
2013-03-18 14:31 ` [PATCH 2/4] remote.c: introduce a way to have different remotes for fetch/ push Jeff King
2013-03-18 14:56 ` Ramkumar Ramachandra
2013-03-18 14:58 ` Jeff King
2013-03-18 22:17 ` Eric Sunshine
2013-03-18 13:16 ` [PATCH 3/4] remote.c: introduce remote.pushdefault Ramkumar Ramachandra
2013-03-18 22:19 ` Eric Sunshine
2013-03-18 13:16 ` [PATCH 4/4] remote.c: introduce branch.<name>.pushremote Ramkumar Ramachandra
2013-03-18 22:23 ` Eric Sunshine
2013-03-18 14:25 ` [PATCH 0/4] Support triangular workflows Jeff King
2013-03-18 14:28 ` Ramkumar Ramachandra
2013-03-18 14:32 ` Jeff King
2013-03-18 15:55 ` Marc Branchaud
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1363612575-7340-3-git-send-email-artagnon@gmail.com \
--to=artagnon@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.