rev-parse: better error message for ambiguous arguments
Currently, if git-rev-parse encounters an argument that is neither a recognizable revision name nor the name of an existing file or directory, and it hasn't encountered a "--" argument, it prints an error message saying "No such file or directory". This can be confusing for users, including users of programs such as gitk that use git-rev-parse, who may then think that they can't ask about the history of files that no longer exist. This makes it print a better error message, one that points out the ambiguity and tells the user what to do to fix it. Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
34fd1c9ac5
commit
3e1a70d925
12
rev-parse.c
12
rev-parse.c
@ -160,6 +160,14 @@ static int show_file(const char *arg)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void die_badfile(const char *arg)
|
||||
{
|
||||
if (errno != ENOENT)
|
||||
die("'%s': %s", arg, strerror(errno));
|
||||
die("'%s' is ambiguous - revision name or file/directory name?\n"
|
||||
"Please put '--' before the list of filenames.", arg);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i, as_is = 0, verify = 0;
|
||||
@ -176,7 +184,7 @@ int main(int argc, char **argv)
|
||||
if (as_is) {
|
||||
if (show_file(arg) && as_is < 2)
|
||||
if (lstat(arg, &st) < 0)
|
||||
die("'%s': %s", arg, strerror(errno));
|
||||
die_badfile(arg);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg,"-n")) {
|
||||
@ -343,7 +351,7 @@ int main(int argc, char **argv)
|
||||
if (verify)
|
||||
die("Needed a single revision");
|
||||
if (lstat(arg, &st) < 0)
|
||||
die("'%s': %s", arg, strerror(errno));
|
||||
die_badfile(arg);
|
||||
}
|
||||
show_default();
|
||||
if (verify && revs_count != 1)
|
||||
|
Loading…
Reference in New Issue
Block a user