> >> diff --git a/builtin/fetch.c b/builtin/fetch.c > >> index 9191620e50..2c50465cff 100644 > >> --- a/builtin/fetch.c > >> +++ b/builtin/fetch.c > >> @@ -1428,7 +1428,9 @@ static void add_negotiation_tips(struct git_transport_options *smart_options) > >> if (!has_glob_specials(s)) { > >> struct object_id oid; > >> if (get_oid(s, &oid)) > >> - die("%s is not a valid object", s); > >> + die(_("%s is not a valid object"), s); > >> + if (!has_object(the_repository, &oid, 0)) > >> + die(_("%s is not a valid object"), s); > > Any reason not to consolidate these, e.g. if (get_oid || !has_object)? > > Then we wouldn't dup the err string. > > Generally I'd agree, but aren't we explicitly conflating cases where > something is a valid way no name an object v.s. being certain that such > an object does not exist? I.e. this should be something like: > > if can't get_get(): > error "couldn't get the OID of revision '%s'" > if can't look up fully-qualified OID: > error "the OID '%s' does not exist" > > Or something... Good point. I'll use wording similar to yours.