# [PATCH] rebase: consistent error messages for staged and unstaged changes.

3 messages from 2009-08-05 to 2009-08-06. Participants: Matthieu Moy, Junio C Hamano.
Thread: https://gitlist.dev/t/20407

## Matthieu Moy, 2009-08-05 15:13

Subject: [PATCH] rebase: consistent error messages for staged and unstaged changes.
Message-ID: <1249485221-10510-1-git-send-email-Matthieu.Moy@imag.fr>
URL: https://gitlist.dev/e/1249485221-10510-1-git-send-email-Matthieu.Moy%40imag.fr

```
Previous version expose the output of the plumbing update-index to the
user, which novice users have difficulty to understand.

We still need to run update-index to refresh the cache (if
diff.autorefreshindex is false, git diff won't do it).
---
 git-rebase.sh |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/git-rebase.sh b/git-rebase.sh
index 18bc694..3555d17 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -382,8 +382,10 @@ else
 fi
 
 # The tree must be really really clean.
-if ! git update-index --ignore-submodules --refresh; then
-	die "cannot rebase: you have unstaged changes"
+if ! git update-index --ignore-submodules --refresh > /dev/null; then
+	echo >&2 "cannot rebase: you have unstaged changes"
+	git diff --name-status -r --ignore-submodules -- >&2
+	exit 1
 fi
 diff=$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)
 case "$diff" in
-- 
1.6.4.18.g07a4a.dirty

```

## Junio C Hamano, 2009-08-05 17:24

Subject: Re: [PATCH] rebase: consistent error messages for staged and unstaged changes.
Message-ID: <7vws5i9nsy.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vws5i9nsy.fsf%40alter.siamese.dyndns.org
In-Reply-To: <1249485221-10510-1-git-send-email-Matthieu.Moy@imag.fr>

```
Matthieu Moy <Matthieu.Moy@imag.fr> writes:

> Previous version expose the output of the plumbing update-index to the
> user, which novice users have difficulty to understand.

Can't -q(uiet) option of update-index be used for this?

>
> We still need to run update-index to refresh the cache (if
> diff.autorefreshindex is false, git diff won't do it).
> ---
>  git-rebase.sh |    6 ++++--
>  1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/git-rebase.sh b/git-rebase.sh
> index 18bc694..3555d17 100755
> --- a/git-rebase.sh
> +++ b/git-rebase.sh
> @@ -382,8 +382,10 @@ else
>  fi
>  
>  # The tree must be really really clean.
> -if ! git update-index --ignore-submodules --refresh; then
> -	die "cannot rebase: you have unstaged changes"
> +if ! git update-index --ignore-submodules --refresh > /dev/null; then
> +	echo >&2 "cannot rebase: you have unstaged changes"
> +	git diff --name-status -r --ignore-submodules -- >&2
> +	exit 1
>  fi
>  diff=$(git diff-index --cached --name-status -r --ignore-submodules HEAD --)
>  case "$diff" in
> -- 
> 1.6.4.18.g07a4a.dirty

```

## Matthieu Moy, 2009-08-06 09:56

Subject: Re: [PATCH] rebase: consistent error messages for staged and unstaged changes.
Message-ID: <vpqljlx465w.fsf@bauges.imag.fr>
URL: https://gitlist.dev/e/vpqljlx465w.fsf%40bauges.imag.fr
In-Reply-To: <7vws5i9nsy.fsf@alter.siamese.dyndns.org>

```
Junio C Hamano <gitster@pobox.com> writes:

> Matthieu Moy <Matthieu.Moy@imag.fr> writes:
>
>> Previous version expose the output of the plumbing update-index to the
>> user, which novice users have difficulty to understand.
>
> Can't -q(uiet) option of update-index be used for this?

No, since update-index -q doesn't set the exit status properly:

$ git update-index --ignore-submodules    --refresh  > /dev/null; echo $? 
1
$ git update-index --ignore-submodules -q --refresh             ; echo $?  
0

-- 
Matthieu

```
