remote.c: introduce a way to have different remotes for fetch/push
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 pushremote_name. For example, you can now do the following in
handle_config():
if (!strcmp(key, "remote.pushdefault"))
git_config_string(&pushremote_name, key, value);
Then, pushes will automatically go to the remote specified by
remote.pushdefault.
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
2e433b7895
commit
f24f715e05
25
remote.c
25
remote.c
@ -49,6 +49,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;
|
||||
@ -670,17 +671,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);
|
||||
@ -699,6 +704,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;
|
||||
|
||||
Reference in New Issue
Block a user