On 2019-09-27 at 12:55:27, Ian Kemp wrote: > Hi, > > Currently, git stash's exit code is 0 regardless of whether it > performed a stash operation or not. Third parties invoking git stash > are therefore unable to determine whether a stash was actually made or > not. > > It would be helpful if there were different exit codes for the case > when a stash was created (working directory dirty) vs when a stash was > not (working dir clean). git stash create suffers from the same issue. > > There are various workarounds for this e.g. > https://stackoverflow.com/a/34116244/70345 but they aren't > particularly pretty or reliable, hence this request.
Folks have already given you a link to previous discussion, but if you
want to know if there's anything to stash couldn't you use something
like this:
#!/bin/sh
if [ -z "$(git status --porcelain)" ]
then
CLEAN=1
fi
[ -n "$CLEAN" ] || git stash
# your operation here
[ -n "$CLEAN" ] || git stash pop
An empty output from git status --porcelain is the definitive way to
know if the working tree is clean, which is what you care about in this
case. If you want to ignore untracked files, a suitable grep invocation
can do that for you as well.
--
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204
signature.asc
Description: PGP signature

