diff options
author | Mike Hommey <mh@glandium.org> | 2014-11-26 19:12:47 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-11-26 10:51:05 -0800 |
commit | 61e704e38a4c3e181403a766c5cf28814e4102e4 (patch) | |
tree | dcdcecd97b02ec93f34a6b54a4f8ce1e091fc428 | |
parent | 2f93541d88fadd1ff5307d81c2c8921ee3eea058 (diff) | |
download | git-61e704e38a4c3e181403a766c5cf28814e4102e4.tar.gz git-61e704e38a4c3e181403a766c5cf28814e4102e4.tar.xz |
sha1_name: avoid unnecessary sha1 lookup in find_unique_abbrev
An example where this happens is when doing an ls-tree on a tree that
contains a commit link. In that case, find_unique_abbrev is called
to get a non-abbreviated hex sha1, but still, a lookup is done as
to whether the sha1 is in the repository (which ends up looking for
a loose object in .git/objects), while the result of that lookup is
not used when returning a non-abbreviated hex sha1.
Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | sha1_name.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sha1_name.c b/sha1_name.c index 65ad066d9..e98d03046 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -373,10 +373,10 @@ const char *find_unique_abbrev(const unsigned char *sha1, int len) int status, exists; static char hex[41]; - exists = has_sha1_file(sha1); memcpy(hex, sha1_to_hex(sha1), 40); if (len == 40 || !len) return hex; + exists = has_sha1_file(sha1); while (len < 40) { unsigned char sha1_ret[20]; status = get_short_sha1(hex, len, sha1_ret, GET_SHA1_QUIETLY); |