diff options
Diffstat (limited to 'sha1_name.c')
-rw-r--r-- | sha1_name.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sha1_name.c b/sha1_name.c index 793d80cbf9..174d3df9b3 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -218,6 +218,12 @@ static int finish_object_disambiguation(struct disambiguate_state *ds, return 0; } +static int disambiguate_commit_only(const unsigned char *sha1, void *cb_data_unused) +{ + int kind = sha1_object_info(sha1, NULL); + return kind == OBJ_COMMIT; +} + static int get_short_sha1(const char *name, int len, unsigned char *sha1, unsigned flags) { @@ -253,6 +259,9 @@ static int get_short_sha1(const char *name, int len, unsigned char *sha1, prepare_alt_odb(); memset(&ds, 0, sizeof(ds)); + if (flags & GET_SHA1_COMMIT) + ds.fn = disambiguate_commit_only; + find_short_object_filename(len, hex_pfx, &ds); find_short_packed_object(len, bin_pfx, &ds); status = finish_object_disambiguation(&ds, sha1); |