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

3 messages from 2019-09-27 to 2019-09-27. Participants: Ian Kemp, Eric Sunshine, brian m. carlson.
Thread: https://gitlist.dev/t/51935

## Ian Kemp, 2019-09-27 12:55

Subject: Feature request: different exit codes for git stash depending on whether stash was created or not
Message-ID: <CADZUK1cjvifbFYk9w6+vE95jgEBuwjoOi_1QfZHoPFBXuXHCCg@mail.gmail.com>
URL: https://gitlist.dev/e/CADZUK1cjvifbFYk9w6%2BvE95jgEBuwjoOi_1QfZHoPFBXuXHCCg%40mail.gmail.com

```
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, 2019-09-27 16:55

Subject: Re: Feature request: different exit codes for git stash depending on whether stash was created or not
Message-ID: <CAPig+cSsSHCNK9yogRUq+gRv+yb5JdPO5ECW0FKZgbW-RXGw8A@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcSsSHCNK9yogRUq%2BgRv%2Byb5JdPO5ECW0FKZgbW-RXGw8A%40mail.gmail.com
In-Reply-To: <CADZUK1cjvifbFYk9w6+vE95jgEBuwjoOi_1QfZHoPFBXuXHCCg@mail.gmail.com>

```
On Fri, Sep 27, 2019 at 8:55 AM Ian Kemp <ian.kemp@gmail.com> wrote:
> 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, 2019-09-27 23:07

Subject: Re: Feature request: different exit codes for git stash depending on whether stash was created or not
Message-ID: <20190927230747.yjdeaen34nnpcchy@camp.crustytoothpaste.net>
URL: https://gitlist.dev/e/20190927230747.yjdeaen34nnpcchy%40camp.crustytoothpaste.net
In-Reply-To: <CADZUK1cjvifbFYk9w6+vE95jgEBuwjoOi_1QfZHoPFBXuXHCCg@mail.gmail.com>

```
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

```
