Re: ls-files --exclude broken?
- From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
- Date
- Sep 15, 2010, 23:06 UTC
- Message-ID
- <AANLkTinW3ugUK6uBq6oFOzKorHubP-oi9KwJzsNrgpE4@mail.gmail.com>
- In-Reply-To
- <AANLkTimuTHvA+qjqpmz=VkCpTTiRA7imb5+ZyTVmPwYy@mail.gmail.com>
On Thu, Sep 16, 2010 at 8:40 AM, Jay Soffian <jaysoffian@gmail.com> wrote:
Show 10 quoted lines
> 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