Jon Seymour <jon.seymour@xxxxxxxxx> writes: > With this change, git rev-parse master@{99999} reports: > > master@{99999} > error: Log for 'master' only has 166 entries. > fatal: ambiguous argument 'master@{99999}': unknown revision or path not in the working tree. > Use '--' to separate paths from revisions If we are going to say "fatal:" and die at the end, I think we probably do not want to say a separate "error" message. Instead of adding a boolean parameter "fail silently or warn?", it may be better to make it a pointer to a strbuf and have it filled with error details (or a machine readable struct and make it responsibility of the caller to generate a message). Then die_verify_filename can become, e.g.: static void NORETURN die_verify_filename(const char *prefix, const char *arg) { unsigned char sha1[20]; unsigned mode; struct strbuf e; /* learn in what way is it bad? */ get_sha1_with_mode_1(arg, sha1, &mode, &e, prefix); /* ... or fall back the most general message. */ die("ambiguous argument '%s': unknown revision or path not in the working tree.\n" "%s" "Use '--' to separate paths from revisions", arg, e.buf); } and we can later reuse the same mechanism to cover other kind of errors, not just "the log does not have that many entries" error. With your "gently" approach it may not be easy to do that without adding more parameters to all the functions in the codepath, no? I also wonder if this can simply become part of "struct object_context", which is to pass extra information in addition to the SHA-1 (which the original API returned) back to the caller. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html