]> Pileus Git - ~andy/git/blobdiff - sha1_name.c
sha1_name.c: teach get_short_sha1() a commit-only option
[~andy/git] / sha1_name.c
index 793d80cbf9d0f2d232032a844c5fadf47d76e0b0..174d3df9b34bc208bd552a3452a9c46a399c07ba 100644 (file)
@@ -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);