threads / discuss / 51935

Feature request: different exit codes for git stash depending on whether stash was created or not

Subject: Feature request: different exit codes for git stash depending on whether stash was created or not

## tl;dr

3 messages between Sep 27, 2019 and Sep 27, 2019.

replies: 2people: 3as markdown or json

Ian Kemp· Sep 27, 2019, 12:55 UTC · lore
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.

Regards, Ian

Eric Sunshine· Sep 27, 2019, 16:55 UTC · re: Ian Kemp · lore

Re: Feature request: different exit codes for git stash depending on whether stash was created or not

On Fri, Sep 27, 2019 at 8:55 AM Ian Kemp <ian.kemp@gmail.com> wrote:
Show 8 quoted lines
> 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 was a recent discussion[1] about this which might interest you.
[1]: https://public-inbox.org/git/01020169a7ad6af3-ad50e2d1-19fb-46eb-b397-759f8d579e8b-000000@eu-west-1.amazonses.com/
brian m. carlson· Sep 27, 2019, 23:07 UTC · re: Ian Kemp · lore

Re: Feature request: different exit codes for git stash depending on whether stash was created or not

On 2019-09-27 at 12:55:27, Ian Kemp wrote:
Show 14 quoted lines
> 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

← back to recent threads