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