Bringing this up again after I've seen another person accidentally create a refs/heads/origin/some-branch and get really confused because "git push" reports up-to-date but the remote branch is not updated. I don't know how he got into that situation, but I hope we should be able to catch it and suggest a way out. On Wed, Mar 23, 2016 at 2:30 PM, Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> wrote: > There are cases when a warning on ambiguous refs may go unnoticed > (e.g. git-log filling up the whole screen). There are also cases when > people want to catch ambiguity early (e.g. it happens deep in some > script). In either case, aborting the program would accomplish it. > > Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> > --- > Documentation/config.txt | 3 ++- > config.c | 5 ++++- > sha1_name.c | 10 ++++++++-- > 3 files changed, 14 insertions(+), 4 deletions(-) > > diff --git a/Documentation/config.txt b/Documentation/config.txt > index 2cd6bdd..4172f59 100644 > --- a/Documentation/config.txt > +++ b/Documentation/config.txt > @@ -522,7 +522,8 @@ core.sharedRepository:: > > core.warnAmbiguousRefs:: > If true, Git will warn you if the ref name you passed it is ambiguous > - and might match multiple refs in the repository. True by default. > + and might match multiple refs in the repository. If set to "fatal", > + the program will abort on ambiguous refs. True by default. > > core.compression:: > An integer -1..9, indicating a default compression level. > diff --git a/config.c b/config.c > index 9ba40bc..79f1ea5 100644 > --- a/config.c > +++ b/config.c > @@ -738,7 +738,10 @@ static int git_default_core_config(const char *var, const char *value) > } > > if (!strcmp(var, "core.warnambiguousrefs")) { > - warn_ambiguous_refs = git_config_bool(var, value); > + if (!strcasecmp(value, "fatal")) > + warn_ambiguous_refs = 2; > + else > + warn_ambiguous_refs = git_config_bool(var, value); > return 0; > } > > diff --git a/sha1_name.c b/sha1_name.c > index 3acf221..a0f0ab9 100644 > --- a/sha1_name.c > +++ b/sha1_name.c > @@ -480,6 +480,8 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1, > warning(warn_msg, len, str); > if (advice_object_name_warning) > fprintf(stderr, "%s\n", _(object_name_msg)); > + if (warn_ambiguous_refs > 1) > + die(_("cannot continue with ambiguous refs")); > } > free(real_ref); > } > @@ -537,8 +539,12 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1, > > if (warn_ambiguous_refs && !(flags & GET_SHA1_QUIETLY) && > (refs_found > 1 || > - !get_short_sha1(str, len, tmp_sha1, GET_SHA1_QUIETLY))) > - warning(warn_msg, len, str); > + !get_short_sha1(str, len, tmp_sha1, GET_SHA1_QUIETLY))) { > + if (warn_ambiguous_refs > 1) > + die(warn_msg, len, str); > + else > + warning(warn_msg, len, str); > + } > > if (reflog_len) { > int nth, i; > -- > 2.8.0.rc0.210.gd302cd2 > -- Duy -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html