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

Re: How to check repository/working tree status from a script

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
May 19, 2009, 16:29 UTC
Message-ID
<alpine.LFD.2.01.0905190920051.3301@localhost.localdomain>
In-Reply-To
<alpine.LFD.2.01.0905190915050.3301@localhost.localdomain>
On Tue, 19 May 2009, Linus Torvalds wrote:
Show 8 quoted lines
> 
> And if what you want to know about is whether there are _new_ files you 
> might want to check, then you need a third check: 'git ls-files'. You 
> won't see it in the error code, but you can do
> 
> 	others=$(git ls-files -o --exclude-standard)
> 
> and then check it 'others' is empty or not.

Actually, you can use 'git ls-files' to also list files that are changed wrt the index, so then you can drop the 'git diff' thing.

IOW, something like this:
	# any staged changes (ready to commit)
	git diff --quiet --staged || echo Staged changes
	# any changes wrt the index (not staged)
	others=$(git ls-files --exclude-standard -o -d -m -u)
	[ -z "$others" ] || echo "Other changes"
should do it.

If you want more specificity wrt the "Other changes", you can add the "-t" flag to git ls-files and parse the output to see whether the listed files were just unknown (ie new files): '?', changed: 'C', removed: 'R' or need to be merged: 'M'

Of course, 'git diff [--staged]' is needed if you actually want to know some "deeper" patterns about _how_ things were changed. IOW, if you want to know about renames/copies, you need to use 'git diff -M/C' to get that kind of information.

			Linus
Previous: Linus TorvaldsNext: Marc Haber
Message 7 of 15 in “How to check repository/working tree status from a script”
  1. Marc HaberMay 19, 2009
  2. Tony FinchMay 19, 2009
  3. Marc HaberMay 19, 2009
  4. Tony FinchMay 19, 2009
  5. Marc HaberMay 20, 2009
  6. Linus TorvaldsMay 19, 2009
  7. Linus TorvaldsMay 19, 2009
  8. Marc HaberMay 20, 2009
  9. Marc HaberMay 20, 2009
  10. Santi BéjarMay 20, 2009
  11. Johannes SixtMay 20, 2009
  12. Marc HaberMay 20, 2009
  13. Marc HaberMay 21, 2009
  14. Jeff KingMay 21, 2009
  15. Marc HaberMay 23, 2009

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.