From: Ingo Rohloff Date: Thu, 07 Nov 2019 19:07:49 GMT Subject: [PATCH v2 3/4] remote: Prevent users from creating remotes named "refs" or "refs/*" Message-ID: <20191107190750.26674-4-ingo.rohloff@lauterbach.com> In-Reply-To: <20191107190750.26674-1-ingo.rohloff@lauterbach.com> To explain the intention, here is an example: A user executes git remote add refs/heads git fetch refs/heads after this operation git log refs/heads/master will very likely complain that this reference is ambiguous. The reason is, that you now very likely have the following two references which both match: refs/heads/master refs/remotes/refs/heads/master git cannot decide which of the two references is meant. By preventing the creation of remotes which are named refs or refs/* this issue is circumvented: git log refs/* will never refer to a remote tracking branch located under refs/remotes/refs/* because such remotes should not exist. Signed-off-by: Ingo Rohloff --- builtin/remote.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/builtin/remote.c b/builtin/remote.c index 5591cef775..2272c16d18 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -189,6 +189,9 @@ static int add(int argc, const char **argv) name = argv[0]; url = argv[1]; + if (newname_has_bad_prefix(name)) + die(_("Invalid new remote name: '%s'"), name); + remote = remote_get(name); if (remote_is_configured(remote, 1)) die(_("remote %s already exists."), name); -- 2.24.0