From: Nguyen Thai Ngoc Duy Date: Wed, 15 Sep 2010 23:06:36 GMT Subject: Re: ls-files --exclude broken? Message-ID: In-Reply-To: On Thu, Sep 16, 2010 at 8:40 AM, Jay Soffian wrote: > Am I missing something really obvious here? > > kore:~/Repos/git (master)$ git ls-files | wc -l >    2009 > kore:~/Repos/git (master)$ git ls-files -x \* | wc -l >    2009 > kore:~/Repos/git (master)$ git ls-files -i -x \* | wc -l >    2009 > kore:~/Repos/git (master)$ git version > git version 1.7.3.rc1.5.g95127 excluded() is not called as far as I can tell, which explains why it did not exclude anything for you. That exclude code was touched by Jeff in commits b5227d8 (ls-files: excludes should not impact tracked files) and 500348a (ls-files: unbreak "ls-files -i"). Something like this works for me, but I haven't finished my morning tea yet, so.. diff --git a/builtin/ls-files.c b/builtin/ls-files.c index bb4f612..ab87843 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -216,9 +216,14 @@ static void show_files(struct dir_struct *dir) for (i = 0; i < active_nr; i++) { struct cache_entry *ce = active_cache[i]; int dtype = ce_to_dtype(ce); - if (dir->flags & DIR_SHOW_IGNORED && - !excluded(dir, ce->name, &dtype)) - continue; + if (dir->flags & DIR_SHOW_IGNORED) { + if (!excluded(dir, ce->name, &dtype)) + continue; + } + else { + if (excluded(dir, ce->name, &dtype)) + continue; + } if (show_unmerged && !ce_stage(ce)) continue; if (ce->ce_flags & CE_UPDATE) -- Duy