aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--object-name.c14
-rwxr-xr-xt/t1512-rev-parse-disambiguation.sh2
2 files changed, 13 insertions, 3 deletions
diff --git a/object-name.c b/object-name.c
index fdff4601b2..9750634ee7 100644
--- a/object-name.c
+++ b/object-name.c
@@ -361,6 +361,16 @@ static int show_ambiguous_object(const struct object_id *oid, void *data)
return 0;
type = oid_object_info(ds->repo, oid, NULL);
+
+ if (type < 0) {
+ strbuf_addstr(&desc, "[bad object]");
+ goto out;
+ }
+
+ assert(type == OBJ_TREE || type == OBJ_COMMIT ||
+ type == OBJ_BLOB || type == OBJ_TAG);
+ strbuf_addstr(&desc, type_name(type));
+
if (type == OBJ_COMMIT) {
struct commit *commit = lookup_commit(ds->repo, oid);
if (commit) {
@@ -374,9 +384,9 @@ static int show_ambiguous_object(const struct object_id *oid, void *data)
strbuf_addf(&desc, " %s", tag->tag);
}
- advise(" %s %s%s",
+out:
+ advise(" %s %s",
repo_find_unique_abbrev(ds->repo, oid, DEFAULT_ABBREV),
- type_name(type) ? type_name(type) : "unknown type",
desc.buf);
strbuf_release(&desc);
diff --git a/t/t1512-rev-parse-disambiguation.sh b/t/t1512-rev-parse-disambiguation.sh
index 010d9c1b8a..0282ada133 100755
--- a/t/t1512-rev-parse-disambiguation.sh
+++ b/t/t1512-rev-parse-disambiguation.sh
@@ -99,7 +99,7 @@ test_expect_success POSIXPERM 'ambigous zlib corrupt loose blob' '
error: unable to unpack cafe... header
error: inflate: data stream error (incorrect header check)
error: unable to unpack cafe... header
- hint: cafe... unknown type
+ hint: cafe... [bad object]
hint: cafe... blob
fatal: ambiguous argument '\''cafe...'\'': unknown revision or path not in the working tree.
Use '\''--'\'' to separate paths from revisions, like this: