Re: [PATCH] sha1_name: don't resolve refs when core.warnambiguousrefs is false
On Mon, Jan 6, 2014 at 7:32 PM, Brodie Rao <brodie@sf.io> wrote:
Show 7 quoted lines
> This change ensures get_sha1_basic() doesn't try to resolve full hashes
> as refs when ambiguous ref warnings are disabled.
>
> This provides a substantial performance improvement when passing many
> hashes to a command (like "git rev-list --stdin") when
> core.warnambiguousrefs is false. The check incurs 6 stat()s for every
> hash supplied, which can be costly over NFS.
Forgot to add:
Signed-off-by: Brodie Rao <brodie@sf.io>
Show 23 quoted lines
> ---
> sha1_name.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sha1_name.c b/sha1_name.c
> index e9c2999..10bd007 100644
> --- a/sha1_name.c
> +++ b/sha1_name.c
> @@ -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));
> --
> 1.8.3.4 (Apple Git-47)
>