diff options
author | Thomas Gummerer <t.gummerer@gmail.com> | 2016-02-16 10:47:52 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-02-16 13:33:12 -0800 |
commit | a31eeae27f38246ba35000fa603d884cdd1a81ae (patch) | |
tree | 94a7ab9e0812a5ed0303435ee35180b735aae3c6 /t/t5505-remote.sh | |
parent | cc8e538d45e4260b27196c3238e6f15d64236523 (diff) | |
download | git-a31eeae27f38246ba35000fa603d884cdd1a81ae.tar.gz |
remote: use remote_is_configured() for add and renametg/git-remote
Both remote add and remote rename use a slightly different hand-rolled
check if the remote exits. The hand-rolled check may have some subtle
cases in which it might fail to detect when a remote already exists.
One such case was fixed in fb86e32 ("git remote: allow adding remotes
agreeing with url.<...>.insteadOf"). Another case is when a remote is
configured as follows:
[remote "foo"]
vcs = bar
If we try to run `git remote add foo bar` with the above remote
configuration, git segfaults. This change fixes it.
In addition, git remote rename $existing foo with the configuration for
foo as above silently succeeds, even though foo already exists,
modifying its configuration. With this patch it fails with "remote foo
already exists".
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t5505-remote.sh')
-rwxr-xr-x | t/t5505-remote.sh | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh index f1d073f1ba..94079a0e63 100755 --- a/t/t5505-remote.sh +++ b/t/t5505-remote.sh @@ -157,6 +157,21 @@ test_expect_success 'rename errors out early when deleting non-existent branch' ) ' +test_expect_success 'add existing foreign_vcs remote' ' + test_config remote.foo.vcs bar && + echo "fatal: remote foo already exists." >expect && + test_must_fail git remote add foo bar 2>actual && + test_i18ncmp expect actual +' + +test_expect_success 'add existing foreign_vcs remote' ' + test_config remote.foo.vcs bar && + test_config remote.bar.vcs bar && + echo "fatal: remote bar already exists." >expect && + test_must_fail git remote rename foo bar 2>actual && + test_i18ncmp expect actual +' + cat >test/expect <<EOF * remote origin Fetch URL: $(pwd)/one |