Øystein Walle <oystwa@xxxxxxxxx> writes: > When trying to pop/apply a stash specified with an argument containing > spaces git-stash will throw an error: > > $ git stash pop 'stash@{two hours ago}' > Too many revisions specified: stash@{two hours ago} > > This happens because word splitting is used to count non-option > arguments. Make use of rev-parse's --sq option to quote the arguments > for us to ensure a correct count. Add quotes where necessary. > > Also add a test that verifies correct behaviour. > > Helped-by: Thomas Rast <tr@xxxxxxxxxxxxx> > Signed-off-by: Øystein Walle <oystwa@xxxxxxxxx> > --- > v3 uses the same eval/--sq technique as v2, suggested by Thomas Rast. > This is basically a resend except that I added a missing '&&' in the > test that Eric Sunshine noticed when reading v1. The change looks good. An unrelated tangent, but here is a tip-of-the-day for the approximate parser. You could have just said git stash pop stash@{2.hours} and it would have been interpreted just the same ;-) > diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh > index debda7a..7eb011c 100755 > --- a/t/t3903-stash.sh > +++ b/t/t3903-stash.sh > @@ -673,4 +673,15 @@ test_expect_success 'store updates stash ref and reflog' ' > grep quux bazzy > ' > > +test_expect_success 'handle stash specification with spaces' ' > + git stash clear && > + echo pig > file && Style: no SP between redirection operator and its target, i.e. echo pig >file && > + git stash && > + test_tick && > + echo cow > file && > + git stash && > + git stash apply "stash@{Thu Apr 7 15:17:13 2005 -0700}" && This is brittle. If new tests are added before this, the test_tick will give you different timestamp and this test will start failing. Perhaps grab the timestamp out of the stash that was created, e.g. ... test_tick && git stash && stamp=$(git log -g --format="%cd" -1 refs/stash) && test_tick && echo cow >file && git stash && git stash apply "stash@{$stamp}" && or something? > + grep pig file > +' > + > test_done -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html