Re: [PATCH 1/5] git-prompt: do not look for refs/stash in $GIT_DIR

2014-08-25 Thread Jeff King
On Sun, Aug 24, 2014 at 08:22:41PM +0700, Gábor Szeder wrote:

> On Aug 23, 2014 12:26 PM, Jeff King  wrote:
> > Since dd0b72c (bash prompt: use bash builtins to check stash 
> > state, 2011-04-01), git-prompt checks whether we have a 
> > stash by looking for $GIT_DIR/refs/stash. Generally external 
> > programs should never do this, because they would miss 
> > packed-refs.
> 
> Not sure whether the prompt script is external program or not, but
> doesn't matter, this is the right thing to do.

Yeah, by external I just meant "nothing outside of refs.c should make
this assumption".

> > That commit claims that packed-refs does not pack 
> > refs/stash, but that is not quite true. It does pack the 
> > ref, but due to a bug, fails to prune the ref. When we fix 
> > that bug, we would want to be doing the right thing here. 
> >
> > Signed-off-by: Jeff King  
> > --- 
> > I know we are pretty sensitive to forks in the prompt code (after all, 
> > that was the point of dd0b72c). This patch is essentially a reversion of 
> > this hunk of dd0b72c, and is definitely safe.
> 
> I'm not sure, but if I remember correctly (don't have the means to
> check it at the moment, sorry) in that commit I also added a 'git
> pack-ref' invocation to the relevant test(s?) to guard us against
> breakages due to changes in 'git pack-refs'.  If that is so, then I
> think those invocations should be removed as well, as they'll become
> useless.

It did add that change (that's actually how I noticed the problem!
Thank you for being thorough in dd0b72c). My inclination is to leave the
pack-refs invocations, as they protect against a certain class of errors
(we are not doing the risky behavior now, but the purpose of the test
suite is to detect regressions; the next person to touch that code may
not be so careful as you were).

I don't feel too strongly, though, so if we want them gone, I'm OK with
that.

-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/5] git-prompt: do not look for refs/stash in $GIT_DIR

2014-08-24 Thread Gábor Szeder
Hi,

On Aug 23, 2014 12:26 PM, Jeff King  wrote:
> Since dd0b72c (bash prompt: use bash builtins to check stash 
> state, 2011-04-01), git-prompt checks whether we have a 
> stash by looking for $GIT_DIR/refs/stash. Generally external 
> programs should never do this, because they would miss 
> packed-refs.

Not sure whether the prompt script is external program or not, but doesn't 
matter, this is the right thing to do.

> That commit claims that packed-refs does not pack 
> refs/stash, but that is not quite true. It does pack the 
> ref, but due to a bug, fails to prune the ref. When we fix 
> that bug, we would want to be doing the right thing here. 
>
> Signed-off-by: Jeff King  
> --- 
> I know we are pretty sensitive to forks in the prompt code (after all, 
> that was the point of dd0b72c). This patch is essentially a reversion of 
> this hunk of dd0b72c, and is definitely safe.

I'm not sure, but if I remember correctly (don't have the means to check it at 
the moment, sorry) in that commit I also added a 'git pack-ref' invocation to 
the relevant test(s?) to guard us against breakages due to changes in 'git 
pack-refs'.  If that is so, then I think those invocations should be removed as 
well, as they'll become useless.

Best,
GáborN�r��yb�X��ǧv�^�)޺{.n�+ا���ܨ}���Ơz�&j:+v���zZ+��+zf���h���~i���z��w���?�&�)ߢf

[PATCH 1/5] git-prompt: do not look for refs/stash in $GIT_DIR

2014-08-22 Thread Jeff King
Since dd0b72c (bash prompt: use bash builtins to check stash
state, 2011-04-01), git-prompt checks whether we have a
stash by looking for $GIT_DIR/refs/stash. Generally external
programs should never do this, because they would miss
packed-refs.

That commit claims that packed-refs does not pack
refs/stash, but that is not quite true. It does pack the
ref, but due to a bug, fails to prune the ref. When we fix
that bug, we would want to be doing the right thing here.

Signed-off-by: Jeff King 
---
I know we are pretty sensitive to forks in the prompt code (after all,
that was the point of dd0b72c). This patch is essentially a reversion of
this hunk of dd0b72c, and is definitely safe.

I think we could probably get by with:

  [ -r "$g/logs/ref/stash" ]

since reflogs are always in the filesystem. However, that seems somewhat
short-sighted, as the work Ronnie is doing is moving in the direction of
more abstraction here. I hope a day will come soon when reflogs do not
have to be stored in $GIT_DIR/logs, and then we would end up updating
this code again.

 contrib/completion/git-prompt.sh | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh
index 9d684b1..c5473dc 100644
--- a/contrib/completion/git-prompt.sh
+++ b/contrib/completion/git-prompt.sh
@@ -468,7 +468,8 @@ __git_ps1 ()
fi
fi
if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] &&
-  [ -r "$g/refs/stash" ]; then
+  git rev-parse --verify --quiet refs/stash >/dev/null
+   then
s="$"
fi
 
-- 
2.1.0.346.ga0367b9

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html