* git ls-files --error-unmatch weirdness
@ 2011-08-12 13:24 SZEDER Gábor
2011-08-12 14:17 ` Nguyen Thai Ngoc Duy
2011-08-12 17:56 ` Junio C Hamano
0 siblings, 2 replies; 3+ messages in thread
From: SZEDER Gábor @ 2011-08-12 13:24 UTC (permalink / raw)
To: git
Hi,
I was looking for untracked files when noticed this:
repo$ git init
Initialized empty Git repository in /home/szeder/tmp/git/repo/.git/
repo (master)$ mkdir dir
repo (master)$ touch dir/file
repo (master)$ git add dir/file
repo (master)$ git commit -m 'first'
[master (root-commit) 2c0990c] first
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 dir/file
repo (master)$ git ls-files --others --error-unmatch
repo/dir (master)$ echo $?
0
repo (master)$ cd dir
repo/dir (master)$ git ls-files --others --error-unmatch
error: pathspec '' did not match any file(s) known to git.
Did you forget to 'git add'?
repo/dir (master)$ echo $?
1
So, the same 'git ls-files' command is OK when run at the top of the
worktree, but errors out in a subdirectory. What's going on? Is this
a bug? If not, why not?
Thanks,
Gábor
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: git ls-files --error-unmatch weirdness
2011-08-12 13:24 git ls-files --error-unmatch weirdness SZEDER Gábor
@ 2011-08-12 14:17 ` Nguyen Thai Ngoc Duy
2011-08-12 17:56 ` Junio C Hamano
1 sibling, 0 replies; 3+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2011-08-12 14:17 UTC (permalink / raw)
To: SZEDER Gábor; +Cc: git
2011/8/12 SZEDER Gábor <szeder@ira.uka.de>:
> So, the same 'git ls-files' command is OK when run at the top of the
> worktree, but errors out in a subdirectory. What's going on? Is this
> a bug? If not, why not?
report_path_error() in ls-files.c is meant to check pathspecs given by
user. However when in a subdir, get_pathspec() automatically adds a
pathspec (that is prefix). This new pathspec confuses
report_path_error(). The following patch may help (possibly corrupted
because I paste in gmail, but you get the idea)
diff --git a/builtin/ls-files.c b/builtin/ls-files.c
index 0e98bff..e0611ac 100644
--- a/builtin/ls-files.c
+++ b/builtin/ls-files.c
@@ -545,7 +545,8 @@ int cmd_ls_files(int argc, const char **argv,
const char *cmd_prefix)
max_prefix_len = max_prefix ? strlen(max_prefix) : 0;
/* Treat unmatching pathspec elements as errors */
- if (pathspec && error_unmatch) {
+ if (pathspec && error_unmatch &&
+ (!prefix || pathspec[1])) {
int num;
for (num = 0; pathspec[num]; num++)
;
--
Duy
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: git ls-files --error-unmatch weirdness
2011-08-12 13:24 git ls-files --error-unmatch weirdness SZEDER Gábor
2011-08-12 14:17 ` Nguyen Thai Ngoc Duy
@ 2011-08-12 17:56 ` Junio C Hamano
1 sibling, 0 replies; 3+ messages in thread
From: Junio C Hamano @ 2011-08-12 17:56 UTC (permalink / raw)
To: SZEDER Gábor; +Cc: git
SZEDER Gábor <szeder@ira.uka.de> writes:
> repo (master)$ git ls-files --others --error-unmatch
The "--error-unmatch" is about reporting errors in pathspecs you gave from
the command line. The behaviour is undefined if you do not give any, like
the above command line.
Having said that, I wouldn't be surprised if it triggered when run from an
empty subdirectory.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-08-12 17:56 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-12 13:24 git ls-files --error-unmatch weirdness SZEDER Gábor
2011-08-12 14:17 ` Nguyen Thai Ngoc Duy
2011-08-12 17:56 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).