On Wed, 26 Apr 2006, Matthias Lederhofer wrote: > > So the rule is: if you don't give that "--", then we have to be able > > to confirm that the filenames are really files. Not a misspelled > > revision name, or a revision name that was correctly spelled, but for > > the wrong project, because you were in the wrong subdirectory ;) > > Shouldn't git rev-parse try to stat the file (additionally?) in the > current directory instead of the top git directory? git (diff|log|..) > seem to fail everytime in a subdirectory without --. Good point. However, the reason for that is that it actually _does_ stat the file in the current directory, but it has done the revs->prefix = setup_git_directory(); in the init path (and it does need to do that, since that's what figures out where the .git directory is, so that we can parse the revisions correctly). And that "setup_git_directory()" will chdir() to the root of the project. So the "lstat()" should probably take "revs->prefix" into account, the way get_pathspec() does. Ie we should probably use char *name = argv[i]; if (rev->prefix) name = prefix_filename(rev->prefix, strlen(rev->prefix), name); if (lstat(name, ..) < 0) die(...) instead of just a plain lstat(). Probably worth doing as a small helper funtion of its own (and get rid of the current "die_badfile()" - and do all of that inside the helper function). Somebody? Linus - : 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