git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: ls-files --exclude broken?

From
Kevin Ballard <kevin@sb.org>
Date
Sep 15, 2010, 23:21 UTC
Message-ID
<02BCF40A-6E66-4E19-9235-5EB271F3D685@sb.org>
In-Reply-To
<7v62y661pl.fsf@alter.siamese.dyndns.org>
On Sep 15, 2010, at 4:12 PM, Junio C Hamano wrote:
Show 27 quoted lines
> Jay Soffian <jaysoffian@gmail.com> writes:
> 
>> Am I missing something really obvious here?
>> 
>> kore:~/Repos/git (master)$ git ls-files | wc -l
>>    2009
> 
> You asked it to show the cached paths (default).  Your project currently
> tracks 2009 paths in the index.
> 
>> kore:~/Repos/git (master)$ git ls-files -x \* | wc -l
>>    2009
> 
> You told that '*' is the exclude pattern for carrying out some operation,
> but you didn't tell what operation you want.  You are shown the cached
> paths (default).
> 
>> kore:~/Repos/git (master)$ git ls-files -i -x \* | wc -l
>>    2009
> 
> You told that '*' is the exclude pattern, you want only paths that match
> the exclude pattern, and chose to show files in the index (which again is
> the default) by not saying -o.
> 
> I've never found -i useful myself (actually I don't find many options the
> command has very useful anymore), but the above is how I read the ls-files
> manual page.
My impression is that -x is pretty much only useful when you're using the -o flag, as anything that's already tracked isn't supposed to be affected by exclude patterns. The argument can be made that ls-files should indeed apply the exclude pattern to other requested display modes, and in fact a reading of the -i switch seems to imply that it should. Running `git ls-files -x '*.m' -c -i` displays all files ending in .m in the index. It would seem logical that the similar `git ls-files -x '*.m' -c` should display all files that don't end in .m in the index, but it doesn't appear to apply the exclude pattern in this case. As for -i being useful, I've never actually used it myself (though obviously it can be used as a way to grep through the index via the exclude pattern), but I can imagine a 
 scenario where I want to clean up all untracked files and end up running something like `git ls-files -z -o -i --exclude-standard | xargs -0 rm`.
-Kevin Ballard
Previous: Elijah NewrenNext: Daniel Johnson
Message 12 of 17 in “ls-files --exclude broken?”
  1. Jay SoffianSep 15, 2010
  2. Nguyen Thai Ngoc DuySep 15, 2010
  3. Junio C HamanoSep 15, 2010
  4. Jay SoffianSep 15, 2010
  5. Nguyen Thai Ngoc DuySep 15, 2010
  6. Jay SoffianSep 15, 2010
  7. Jay SoffianSep 15, 2010
  8. Jeff KingSep 16, 2010
  9. Jay SoffianSep 16, 2010
  10. Jeff KingSep 16, 2010
  11. Elijah NewrenSep 15, 2010
  12. Kevin BallardSep 15, 2010
  13. Daniel JohnsonSep 15, 2010
  14. git-ls-files.txt: clarify -x/--exclude optionJay Soffian, Sep 15, 2010
  15. Jeff KingSep 16, 2010
  16. Junio C HamanoSep 16, 2010
  17. Jeff KingSep 16, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.