Merge branch 'br/sha1-name-40-hex-no-disambiguation'
authorJunio C Hamano <gitster@pobox.com>
Mon, 13 Jan 2014 19:33:29 +0000 (11:33 -0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 13 Jan 2014 19:33:29 +0000 (11:33 -0800)
When parsing a 40-hex string into the object name, the string is
checked to see if it can be interpreted as a ref so that a warning
can be given for ambiguity. The code kicked in even when the
core.warnambiguousrefs is set to false to squelch this warning, in
which case the cycles spent to look at the ref namespace were an
expensive no-op, as the result was discarded without being used.

* br/sha1-name-40-hex-no-disambiguation:
sha1_name: don't resolve refs when core.warnambiguousrefs is false

sha1_name.c
index b1873d8113bdeb0ff8087319c99833036aaffe1b..a5578f718ea092338eb16fbe7dbf867a98e82218 100644 (file)
@@ -451,9 +451,9 @@ static int get_sha1_basic(const char *str, int len, unsigned char *sha1)
        int at, reflog_len, nth_prior = 0;
 
        if (len == 40 && !get_sha1_hex(str, sha1)) {
-               if (warn_on_object_refname_ambiguity) {
+               if (warn_ambiguous_refs && warn_on_object_refname_ambiguity) {
                        refs_found = dwim_ref(str, len, tmp_sha1, &real_ref);
-                       if (refs_found > 0 && warn_ambiguous_refs) {
+                       if (refs_found > 0) {
                                warning(warn_msg, len, str);
                                if (advice_object_name_warning)
                                        fprintf(stderr, "%s\n", _(object_name_msg));