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>
+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;
int main(int argc, char **argv)
{
int i, as_is = 0, verify = 0;
if (as_is) {
if (show_file(arg) && as_is < 2)
if (lstat(arg, &st) < 0)
if (as_is) {
if (show_file(arg) && as_is < 2)
if (lstat(arg, &st) < 0)
- die("'%s': %s", arg, strerror(errno));
continue;
}
if (!strcmp(arg,"-n")) {
continue;
}
if (!strcmp(arg,"-n")) {
if (verify)
die("Needed a single revision");
if (lstat(arg, &st) < 0)
if (verify)
die("Needed a single revision");
if (lstat(arg, &st) < 0)
- die("'%s': %s", arg, strerror(errno));
}
show_default();
if (verify && revs_count != 1)
}
show_default();
if (verify && revs_count != 1)