# [PATCH 1/1] Improve error messages from 'git stash show'

5 messages from 2010-03-15 to 2010-03-16. Participants: Gustaf Hendeby, Junio C Hamano.
Thread: https://gitlist.dev/t/23032

## Gustaf Hendeby, 2010-03-15 22:19

Subject: [PATCH 1/1] Improve error messages from 'git stash show'
Message-ID: <1268691590-27100-1-git-send-email-hendeby@isy.liu.se>
URL: https://gitlist.dev/e/1268691590-27100-1-git-send-email-hendeby%40isy.liu.se

```
The previous error message "fatal: Needed a single revision" is not
very informative.

Signed-off-by: Gustaf Hendeby <hendeby@isy.liu.se>
---
 git-stash.sh |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/git-stash.sh b/git-stash.sh
index aa47e54..cf221c6 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -210,14 +210,18 @@ list_stash () {
 }
 
 show_stash () {
+	have_stash || die 'No stash found'
+
 	flags=$(git rev-parse --no-revs --flags "$@")
 	if test -z "$flags"
 	then
 		flags=--stat
 	fi
 
-	w_commit=$(git rev-parse --verify --default $ref_stash "$@") &&
-	b_commit=$(git rev-parse --verify "$w_commit^") &&
+	w_commit=$(git rev-parse --quiet --verify --default $ref_stash "$@") &&
+	b_commit=$(git rev-parse --quiet --verify "$w_commit^") ||
+		die 'Stash not found'
+
 	git diff $flags $b_commit $w_commit
 }
 
-- 
1.7.0.2.274.gc376e.dirty

```

## Junio C Hamano, 2010-03-15 23:17

Subject: Re: [PATCH 1/1] Improve error messages from 'git stash show'
Message-ID: <7vbpepb2e9.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vbpepb2e9.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1268691590-27100-1-git-send-email-hendeby@isy.liu.se>

```
Gustaf Hendeby <hendeby@isy.liu.se> writes:

> The previous error message "fatal: Needed a single revision" is not
> very informative.
>
> Signed-off-by: Gustaf Hendeby <hendeby@isy.liu.se>
> ---
>  git-stash.sh |    8 ++++++--
>  1 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/git-stash.sh b/git-stash.sh
> index aa47e54..cf221c6 100755
> --- a/git-stash.sh
> +++ b/git-stash.sh
> @@ -210,14 +210,18 @@ list_stash () {
>  }
>  
>  show_stash () {
> +	have_stash || die 'No stash found'
> +
>  	flags=$(git rev-parse --no-revs --flags "$@")
>  	if test -z "$flags"
>  	then
>  		flags=--stat
>  	fi
>  
> -	w_commit=$(git rev-parse --verify --default $ref_stash "$@") &&
> -	b_commit=$(git rev-parse --verify "$w_commit^") &&
> +	w_commit=$(git rev-parse --quiet --verify --default $ref_stash "$@") &&
> +	b_commit=$(git rev-parse --quiet --verify "$w_commit^") ||
> +		die 'Stash not found'
> +

Because you checked have_stash upfront, an error detected here cannot be
"stash not found".  It is something else, isn't it?

>  	git diff $flags $b_commit $w_commit
>  }
>  
> -- 
> 1.7.0.2.274.gc376e.dirty

```

## Gustaf Hendeby, 2010-03-16 08:04

Subject: Re: [PATCH 1/1] Improve error messages from 'git stash show'
Message-ID: <4B9F3BAB.10608@isy.liu.se>
URL: https://gitlist.dev/e/4B9F3BAB.10608%40isy.liu.se
In-Reply-To: <7vbpepb2e9.fsf@alter.siamese.dyndns.org>

```
On 03/16/2010 12:17 AM, Junio C Hamano wrote:
> Gustaf Hendeby <hendeby@isy.liu.se> writes:
> 
>> The previous error message "fatal: Needed a single revision" is not
>> very informative.
>>
>> Signed-off-by: Gustaf Hendeby <hendeby@isy.liu.se>
>> ---
>>  git-stash.sh |    8 ++++++--
>>  1 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/git-stash.sh b/git-stash.sh
>> index aa47e54..cf221c6 100755
>> --- a/git-stash.sh
>> +++ b/git-stash.sh
>> @@ -210,14 +210,18 @@ list_stash () {
>>  }
>>  
>>  show_stash () {
>> +	have_stash || die 'No stash found'
>> +
>>  	flags=$(git rev-parse --no-revs --flags "$@")
>>  	if test -z "$flags"
>>  	then
>>  		flags=--stat
>>  	fi
>>  
>> -	w_commit=$(git rev-parse --verify --default $ref_stash "$@") &&
>> -	b_commit=$(git rev-parse --verify "$w_commit^") &&
>> +	w_commit=$(git rev-parse --quiet --verify --default $ref_stash "$@") &&
>> +	b_commit=$(git rev-parse --quiet --verify "$w_commit^") ||
>> +		die 'Stash not found'
>> +
> 
> Because you checked have_stash upfront, an error detected here cannot be
> "stash not found".  It is something else, isn't it?

This case occurs when you do something like git stash foo, where foo is
no appropriate stash to show.  Would something like this be more
informative in the case of git stash foo:

Stash entry 'foo' could not be found

/Gustaf

```

## Junio C Hamano, 2010-03-16 16:53

Subject: Re: [PATCH 1/1] Improve error messages from 'git stash show'
Message-ID: <7v4okgfbrt.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7v4okgfbrt.fsf%40alter.siamese.dyndns.org
In-Reply-To: <4B9F3BAB.10608@isy.liu.se>

```
Gustaf Hendeby <hendeby@isy.liu.se> writes:

> On 03/16/2010 12:17 AM, Junio C Hamano wrote:
>> Gustaf Hendeby <hendeby@isy.liu.se> writes:
>> 
>>> The previous error message "fatal: Needed a single revision" is not
>>> very informative.
>>>
>>> Signed-off-by: Gustaf Hendeby <hendeby@isy.liu.se>
>>> ---
>>>  git-stash.sh |    8 ++++++--
>>>  1 files changed, 6 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/git-stash.sh b/git-stash.sh
>>> index aa47e54..cf221c6 100755
>>> --- a/git-stash.sh
>>> +++ b/git-stash.sh
>>> @@ -210,14 +210,18 @@ list_stash () {
>>>  }
>>>  
>>>  show_stash () {
>>> +	have_stash || die 'No stash found'
>>> +
>>>  	flags=$(git rev-parse --no-revs --flags "$@")
>>>  	if test -z "$flags"
>>>  	then
>>>  		flags=--stat
>>>  	fi
>>>  
>>> -	w_commit=$(git rev-parse --verify --default $ref_stash "$@") &&
>>> -	b_commit=$(git rev-parse --verify "$w_commit^") &&
>>> +	w_commit=$(git rev-parse --quiet --verify --default $ref_stash "$@") &&
>>> +	b_commit=$(git rev-parse --quiet --verify "$w_commit^") ||
>>> +		die 'Stash not found'
>>> +
>> 
>> Because you checked have_stash upfront, an error detected here cannot be
>> "stash not found".  It is something else, isn't it?
>
> This case occurs when you do something like git stash foo, where foo is
> no appropriate stash to show.  Would something like this be more
> informative in the case of git stash foo:
>
> Stash entry 'foo' could not be found

That is more like "'foo' is not a stash", isn't it?

```

## Gustaf Hendeby, 2010-03-16 17:52

Subject: [PATCH v2] Improve error messages from 'git stash show'
Message-ID: <1268761957-9769-1-git-send-email-hendeby@isy.liu.se>
URL: https://gitlist.dev/e/1268761957-9769-1-git-send-email-hendeby%40isy.liu.se
In-Reply-To: <7v4okgfbrt.fsf@alter.siamese.dyndns.org>

```
The previous error message "fatal: Needed a single revision" is not
very informative.

Signed-off-by: Gustaf Hendeby <hendeby@isy.liu.se>
---

On 03/16/2010 05:53 PM, Junio C Hamano wrote:
>>>> +	b_commit=$(git rev-parse --quiet --verify "$w_commit^") ||
>>>> >>>  +		die 'Stash not found'
>>>> >>>  +
>>> >>  
>>> >>  Because you checked have_stash upfront, an error detected here cannot be
>>> >>  "stash not found".  It is something else, isn't it?
>> >
>> >  This case occurs when you do something like git stash foo, where foo is
>> >  no appropriate stash to show.  Would something like this be more
>> >  informative in the case of git stash foo:
>> >
>> >  Stash entry 'foo' could not be found
> That is more like "'foo' is not a stash", isn't it?

I find your suggestion much clearer.  Thank you!

/Gustaf

 git-stash.sh |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/git-stash.sh b/git-stash.sh
index aa47e54..59db3dc 100755
--- a/git-stash.sh
+++ b/git-stash.sh
@@ -210,14 +210,18 @@ list_stash () {
 }
 
 show_stash () {
+	have_stash || die 'No stash found'
+
 	flags=$(git rev-parse --no-revs --flags "$@")
 	if test -z "$flags"
 	then
 		flags=--stat
 	fi
 
-	w_commit=$(git rev-parse --verify --default $ref_stash "$@") &&
-	b_commit=$(git rev-parse --verify "$w_commit^") &&
+	w_commit=$(git rev-parse --quiet --verify --default $ref_stash "$@") &&
+	b_commit=$(git rev-parse --quiet --verify "$w_commit^") ||
+		die "'$*' is not a stash"
+
 	git diff $flags $b_commit $w_commit
 }
 
-- 
1.7.0.2.274.gba5d.dirty


```
