remote: use remote_is_configured() for add and rename
authorThomas Gummerer <t.gummerer@gmail.com>
Tue, 16 Feb 2016 09:47:52 +0000 (10:47 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 16 Feb 2016 21:33:12 +0000 (13:33 -0800)
commita31eeae27f38246ba35000fa603d884cdd1a81ae
tree94a7ab9e0812a5ed0303435ee35180b735aae3c6
parentcc8e538d45e4260b27196c3238e6f15d64236523
remote: use remote_is_configured() for add and rename

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>
builtin/remote.c
t/t5505-remote.sh