diff --git a/hash.h b/hash.h index d6422ddf45..ec594c63a6 100644 --- a/hash.h +++ b/hash.h @@ -216,6 +216,7 @@ struct object_id { #define GET_OID_REQUIRE_PATH 010000 #define GET_OID_HASH_ANY 020000 #define GET_OID_SKIP_AMBIGUITY_CHECK 040000 +#define GET_OID_GENTLY 0100000 #define GET_OID_DISAMBIGUATORS \ (GET_OID_COMMIT | GET_OID_COMMITTISH | \ diff --git a/object-name.c b/object-name.c index 2c751a5352..3138103343 100644 --- a/object-name.c +++ b/object-name.c @@ -1081,13 +1081,17 @@ static int get_oid_basic(struct repository *r, const char *str, int len, * still fill in the oid with the "old" value, * which we can use. */ - } else { + } else if (!(flags & GET_OID_GENTLY)) { if (flags & GET_OID_QUIETLY) { exit(128); } die(_("log for '%.*s' only has %d entries"), len, str, co_cnt); } + if (flags & GET_OID_GENTLY) { + free(real_ref); + return -1; + } } }