threads / patch / 34125

patchprompt: squelch error output from cat

Subject: [PATCH] prompt: squelch error output from cat

## tl;dr

5 messages between Jun 13, 2013 and Jun 15, 2013. Diffs are folded; open one to read it.

replies: 4people: 2as markdown or json

Ramkumar Ramachandra· Jun 13, 2013, 13:46 UTC · lore

The files $g/rebase-{merge,apply}/{head-name,msgnum,end} are not guaranteed to exist. When attempting to cat them, squelch the error output to get rid of messages like these:

  cat: .git/rebase-merge/msgnum: No such file or directory
  cat: .git/rebase-merge/end: No such file or directory
Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
---
 contrib/completion/git-prompt.sh | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)
Show changes to contrib/completion/git-prompt.sh +6 −6
diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 86a4f3f..07a6218 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -347,9 +347,9 @@ __git_ps1 ()
 		local step=""
 		local total=""
 		if [ -d "$g/rebase-merge" ]; then
-			b="$(cat "$g/rebase-merge/head-name")"
-			step=$(cat "$g/rebase-merge/msgnum")
-			total=$(cat "$g/rebase-merge/end")
+			b="$(cat "$g/rebase-merge/head-name" 2>/dev/null)"
+			step=$(cat "$g/rebase-merge/msgnum" 2>/dev/null)
+			total=$(cat "$g/rebase-merge/end" 2>/dev/null)
 			if [ -f "$g/rebase-merge/interactive" ]; then
 				r="|REBASE-i"
 			else
@@ -357,10 +357,10 @@ __git_ps1 ()
 			fi
 		else
 			if [ -d "$g/rebase-apply" ]; then
-				step=$(cat "$g/rebase-apply/next")
-				total=$(cat "$g/rebase-apply/last")
+				step=$(cat "$g/rebase-apply/next" 2>/dev/null)
+				total=$(cat "$g/rebase-apply/last" 2>/dev/null)
 				if [ -f "$g/rebase-apply/rebasing" ]; then
-					b="$(cat "$g/rebase-apply/head-name")"
+					b="$(cat "$g/rebase-apply/head-name" 2>/dev/null)"
 					r="|REBASE"
 				elif [ -f "$g/rebase-apply/applying" ]; then
 					r="|AM"
-- 
1.8.3.1.384.g7cec0b4
SZEDER Gábor· Jun 13, 2013, 14:39 UTC · re: Ramkumar Ramachandra · lore

Re: [PATCH] prompt: squelch error output from cat

Hi,
On Thu, Jun 13, 2013 at 07:16:49PM +0530, Ramkumar Ramachandra wrote:
Show 8 quoted lines
> The files $g/rebase-{merge,apply}/{head-name,msgnum,end} are not
> guaranteed to exist.  When attempting to cat them, squelch the error
> output to get rid of messages like these:
> 
>   cat: .git/rebase-merge/msgnum: No such file or directory
>   cat: .git/rebase-merge/end: No such file or directory
> 
> Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
Makes sense.

Just curious: when do those files don't exist? When using an older version of git with a newer prompt, obviously, but are there other cases?

Thanks, Gábor

Ramkumar Ramachandra· Jun 13, 2013, 14:45 UTC · re: SZEDER Gábor · lore

Re: [PATCH] prompt: squelch error output from cat

SZEDER Gábor wrote:
> Just curious: when do those files don't exist?  When using an older
> version of git with a newer prompt, obviously, but are there other
> cases?
  # On terminal one
  $ git rebase --interactive master
  # Ignore editor, and open terminal two
  cat: .git/rebase-merge/msgnum: No such file or directory
  cat: .git/rebase-merge/end: No such file or directory
  $
SZEDER Gábor· Jun 14, 2013, 13:58 UTC · re: Ramkumar Ramachandra · lore

Re: [PATCH] prompt: squelch error output from cat

On Thu, Jun 13, 2013 at 08:15:59PM +0530, Ramkumar Ramachandra wrote:
Show 11 quoted lines
> SZEDER Gábor wrote:
> > Just curious: when do those files don't exist?  When using an older
> > version of git with a newer prompt, obviously, but are there other
> > cases?
> 
>   # On terminal one
>   $ git rebase --interactive master
>   # Ignore editor, and open terminal two
>   cat: .git/rebase-merge/msgnum: No such file or directory
>   cat: .git/rebase-merge/end: No such file or directory
>   $
Interesting, I wouldn't have thought of that.

I was wondering whether there are cases and code paths in git rebase, where it knows what to write into those files but it does not write them, which might be worth fixing additionally. In case of this halfway-started rebase I don't see any point in displaying 0/42, so I don't think any additional fix would be necessary.

Thanks, Gábor

SZEDER Gábor· Jun 15, 2013, 15:33 UTC · re: Ramkumar Ramachandra · lore

Re: [PATCH] prompt: squelch error output from cat

Hi Junio,

I see you picked up this patch in branch 'rr/prompt-autostash-breakage-fix'. This patch has actually nothing to do with autostash, it is a fix for b71dc3e1 (bash-prompt.sh: show where rebase is at when stopped, 2013-04-25).

Gábor
On Thu, Jun 13, 2013 at 07:16:49PM +0530, Ramkumar Ramachandra wrote:
Show 47 quoted lines
> The files $g/rebase-{merge,apply}/{head-name,msgnum,end} are not
> guaranteed to exist.  When attempting to cat them, squelch the error
> output to get rid of messages like these:
> 
>   cat: .git/rebase-merge/msgnum: No such file or directory
>   cat: .git/rebase-merge/end: No such file or directory
> 
> Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com>
> ---
>  contrib/completion/git-prompt.sh | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
> index 86a4f3f..07a6218 100644
> --- a/contrib/completion/git-prompt.sh
> +++ b/contrib/completion/git-prompt.sh
> @@ -347,9 +347,9 @@ __git_ps1 ()
>  		local step=""
>  		local total=""
>  		if [ -d "$g/rebase-merge" ]; then
> -			b="$(cat "$g/rebase-merge/head-name")"
> -			step=$(cat "$g/rebase-merge/msgnum")
> -			total=$(cat "$g/rebase-merge/end")
> +			b="$(cat "$g/rebase-merge/head-name" 2>/dev/null)"
> +			step=$(cat "$g/rebase-merge/msgnum" 2>/dev/null)
> +			total=$(cat "$g/rebase-merge/end" 2>/dev/null)
>  			if [ -f "$g/rebase-merge/interactive" ]; then
>  				r="|REBASE-i"
>  			else
> @@ -357,10 +357,10 @@ __git_ps1 ()
>  			fi
>  		else
>  			if [ -d "$g/rebase-apply" ]; then
> -				step=$(cat "$g/rebase-apply/next")
> -				total=$(cat "$g/rebase-apply/last")
> +				step=$(cat "$g/rebase-apply/next" 2>/dev/null)
> +				total=$(cat "$g/rebase-apply/last" 2>/dev/null)
>  				if [ -f "$g/rebase-apply/rebasing" ]; then
> -					b="$(cat "$g/rebase-apply/head-name")"
> +					b="$(cat "$g/rebase-apply/head-name" 2>/dev/null)"
>  					r="|REBASE"
>  				elif [ -f "$g/rebase-apply/applying" ]; then
>  					r="|AM"
> -- 
> 1.8.3.1.384.g7cec0b4
> 
> 

← back to recent threads