On Sun, 26 Mar 2006, Timo Hirvonen wrote:
$ git-whatchanged old-file.c
fatal: 'old-file.c': No such file or directory
$ touch old-file.c
$ git-whatchanged old-file.c
Hah, it worked!
It worked even before:
git-whatchanged -- old-file.c
always works.
If you think of the "filename spec" as _always_ having to have a "--" to
separate the filenames from the other arguments, you're thinking the right
way. Then, there's a _shorthand_ for existing files, where we allow users
being lazy (because _I_ am very lazy indeed), which allows dropping of the
"--", but then the code requires that the filenames are real filenames as
of now.
Hmm... this works too without the touch-hack:
$ git-whatchanged file.c old-file.c
I wish I had known this before.
Actually, it -shouldn't- work. It's just that "git-rev-parse" isn't as
anal as it should be.
Here's a fix.
Linus
----
diff --git a/rev-parse.c b/rev-parse.c
index f90e999..104b1e2 100644
--- a/rev-parse.c
+++ b/rev-parse.c
@@ -172,7 +172,9 @@ int main(int argc, char **argv)
char *dotdot;
if (as_is) {
- show_file(arg);
+ if (show_file(arg) && as_is < 2)
+ if (lstat(arg, &st) < 0)
+ die("'%s': %s", arg, strerror(errno));
continue;
}
if (!strcmp(arg,"-n")) {@@ -192,7 +194,7 @@ int main(int argc, char **argv)
if (*arg == '-') {
if (!strcmp(arg, "--")) {
- as_is = 1;
+ as_is = 2;
/* Pass on the "--" if we show anything but files.. */
if (filter & (DO_FLAGS | DO_REVS))
show_file(arg);