Skip to content

Commit

Permalink
Give error when no remote is configured
Browse files Browse the repository at this point in the history
When there's no explicitly-named remote, we use the remote specified
for the current branch, which in turn defaults to "origin". But it
this case should require the remote to actually be configured, and not
fall back to the path "origin".

Possibly, the config file's "remote = something" should require the
something to be a configured remote instead of a bare repository URL,
but we actually test with a bare repository URL.

In fetch, we were giving the sensible error message when coming up
with a URL failed, but this wasn't actually reachable, so move that
error up and use it when appropriate.

In push, we need a new error message, because the old one (formerly
unreachable without a lot of help) used the repo name, which was NULL.

Signed-off-by: Daniel Barkalow <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
iabervon authored and gitster committed Mar 11, 2009
1 parent 9a6682b commit fa685bd
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 8 deletions.
6 changes: 3 additions & 3 deletions builtin-fetch.c
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,9 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
else
remote = remote_get(argv[0]);

if (!remote)
die("Where do you want to fetch from today?");

transport = transport_get(remote, remote->url[0]);
if (verbosity >= 2)
transport->verbose = 1;
Expand All @@ -648,9 +651,6 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
if (depth)
set_option(TRANS_OPT_DEPTH, depth);

if (!transport->url)
die("Where do you want to fetch from today?");

if (argc > 1) {
int j = 0;
refs = xcalloc(argc + 1, sizeof(const char *));
Expand Down
7 changes: 5 additions & 2 deletions builtin-push.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,11 @@ static int do_push(const char *repo, int flags)
int i, errs;
struct remote *remote = remote_get(repo);

if (!remote)
die("bad repository '%s'", repo);
if (!remote) {
if (repo)
die("bad repository '%s'", repo);
die("No destination configured to push to.");
}

if (remote->mirror)
flags |= (TRANSPORT_PUSH_MIRROR|TRANSPORT_PUSH_FORCE);
Expand Down
30 changes: 27 additions & 3 deletions remote.c
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ static int branches_nr;

static struct branch *current_branch;
static const char *default_remote_name;
static int explicit_default_remote_name;

static struct rewrite **rewrite;
static int rewrite_alloc;
Expand Down Expand Up @@ -104,6 +105,16 @@ static void add_url_alias(struct remote *remote, const char *url)
add_url(remote, alias_url(url));
}

static struct remote *get_remote_by_name(const char *name)
{
int i;
for (i = 0; i < remotes_nr; i++) {
if (!strcmp(name, remotes[i]->name))
return remotes[i];
}
return NULL;
}

static struct remote *make_remote(const char *name, int len)
{
struct remote *ret;
Expand Down Expand Up @@ -330,8 +341,10 @@ static int handle_config(const char *key, const char *value, void *cb)
if (!value)
return config_error_nonbool(key);
branch->remote_name = xstrdup(value);
if (branch == current_branch)
if (branch == current_branch) {
default_remote_name = branch->remote_name;
explicit_default_remote_name = 1;
}
} else if (!strcmp(subkey, ".merge")) {
if (!value)
return config_error_nonbool(key);
Expand Down Expand Up @@ -643,11 +656,22 @@ static int valid_remote_nick(const char *name)
struct remote *remote_get(const char *name)
{
struct remote *ret;
int name_given = 0;

read_config();
if (!name)
if (name)
name_given = 1;
else {
name = default_remote_name;
ret = make_remote(name, 0);
name_given = explicit_default_remote_name;
}
if (name_given)
ret = make_remote(name, 0);
else {
ret = get_remote_by_name(name);
if (!ret)
return NULL;
}
if (valid_remote_nick(name)) {
if (!ret->url)
read_remotes_file(ret);
Expand Down

0 comments on commit fa685bd

Please sign in to comment.