Re: determine if the tree is dirty
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 3, 2009, 19:19 UTC
- Message-ID
- <7v3a4vs9g3.fsf@alter.siamese.dyndns.org>
- In-Reply-To
- <799406d60911031057l5dcb4d4fi3705cc66997ff7f7@mail.gmail.com>
Adam Mercer <ramercer@gmail.com> writes:
Show 18 quoted lines
> 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.