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

git ls-files unreliable?

From
GGGabor Gombas <gombasg@digikabel.hu>
Date
Apr 2, 2010, 18:08 UTC
Message-ID
<20100402180842.GA5798@twister.home>
Hi,

I want to verify from a script that the working directory is clean. Some time ago Linus suggested to use "git diff --quiet --cached" followed by "git ls-files --exclude-standard -o -d -m -u". But:

$ git status # On branch git_workdir_check # Your branch is ahead of 'origin/master' by 1 commit. # # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: ../../../test # # Changed but not updated: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working # directory) # # modified: ../../../test # $ git ls-files --exclude-standard -o -d -m -u $ echo $? 0

So there _were_ uncommitted changes, "git status" showed them, but "git ls-files" did not. Unstaging the staged changes did not help, changing a different file did not help. Tried git versions 1.5.4.2 and 1.7.0-rc2, both showed the same behavior.

When I did a "commit" and changed a file after that, then ls-files
started to take notice. I don't know how to reproduce the state shown
above. But this means that I cannot rely on "git ls-files" to check if
the working directory is clean; so what should I use instead?
Restriction: any solutions must work with git versions as old as 1.5.4.
Gabor
Next: Alex Riesen
Message 1 of 2 in “git ls-files unreliable?”
  1. Gabor GombasApr 2, 2010
  2. Alex RiesenApr 2, 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.