Re: error: src refspec refs/heads/master matches more than one.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 18, 2014, 19:03 UTC
- Message-ID
- <xmqqha7wfdld.fsf@gitster.dls.corp.google.com>
- In-Reply-To
- <20140215085355.GA15461@lanh>
Duy Nguyen <pclouds@gmail.com> writes:
Show 16 quoted lines
> Prevent is a strong word. I meant we only do it if they force
> it. Something like this..
>
> -- 8< --
> diff --git a/branch.c b/branch.c
> index 723a36b..3f0540f 100644
> --- a/branch.c
> +++ b/branch.c
> @@ -251,6 +251,11 @@ void create_branch(const char *head,
> forcing = 1;
> }
>
> + if (!force && dwim_ref(name, strlen(name), sha1, &real_ref))
> + die(_("creating ref refs/heads/%s makes %s ambiguous.\n"
> + "Use -f to create it anyway."),
> + name, name);Does this check still allow you to create a branch "refs/heads/next" and then later create a branch "next"? The latter will introduce an ambiguity without any prevention, even though the prevention would trigger if the order in which these two branches are created is swapped--- the end result has ambiguity but the safety covers only one avenue to the confusing situation.
And the only way I can think of to avoid that kind of confusion is to forbid creation of a subset of possible names by reserving a set of known (but arbitrary) prefixes---which I am not sure is a good way to go. At least not yet.
So...