diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2014-12-23 14:25:05 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-12-23 12:42:36 -0800 |
commit | fb86e32dcc9ed07ee2f1df6aafbf34d469007b1f (patch) | |
tree | 7f881178376fdd55de4245c1c1ada520cda310fb /builtin/remote.c | |
parent | bbcefffcea9789e4a1a2023a1c778e2c07db77a7 (diff) | |
download | git-fb86e32dcc9ed07ee2f1df6aafbf34d469007b1f.tar.gz |
git remote: allow adding remotes agreeing with url.<...>.insteadOf
When adding a remote, we make sure that the remote does not exist
already. However, this test was not quite correct: when the
url.<...>.insteadOf config variable was set to the remote name to be
added, the code would assume that the remote exists already.
Let's allow adding remotes when there is a url.<...>.insteadOf setting
when both the name and the URL agree with the remote to be added.
It might seem like a mistake to compare against remote->url[0] without
verifying that remote->url_nr >=1, but at this point a missing URL has
been filled by the name already, therefore url_nr cannot be zero.
Noticed by Anastas Dancha.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/remote.c')
-rw-r--r-- | builtin/remote.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/builtin/remote.c b/builtin/remote.c index 46ecfd9f7b..b4ff468977 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -180,7 +180,9 @@ static int add(int argc, const char **argv) url = argv[1]; remote = remote_get(name); - if (remote && (remote->url_nr > 1 || strcmp(name, remote->url[0]) || + if (remote && (remote->url_nr > 1 || + (strcmp(name, remote->url[0]) && + strcmp(url, remote->url[0])) || remote->fetch_refspec_nr)) die(_("remote %s already exists."), name); |