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

Attachment: signature.asc
Description: PGP signature

Reply via email to