Re: determine if the tree is dirty
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:47:39
Adam Mercer [off-list ref] writes:
As part of a python script I need to determine if a tree has any
uncommitted changes, so far I am been using:
# determine tree status
status_cmd = 'git status'
status_output = run_external_command(status_cmd,
honour_ret_code=False)[1].strip()
if status_output.endswith('no changes added to commit (use "git add"
and/or "git commit -a")'):
git_status = 'UNCLEAN: Some modifications not committed'
else:
git_status = 'CLEAN: All modifications committed'
but I feel that this relies to heavily on the porcelain and that there
should be a better way to accomplish this without relying on parsing
the output of git-status.
Does anyone know of a better way to accomplish this?Use plumbing commands. "git diff-files" will show changes you have in the work tree compared to the index. "git diff-index HEAD" will show changes you have in the work tree compared to the HEAD. "git diff-index --cached HEAD" will show changes you have in the index compared to the HEAD.