* t9401 fails with OS X sed @ 2012-10-25 3:54 Brian Gernhardt 2012-10-25 5:04 ` Geert Bosch 0 siblings, 1 reply; 10+ messages in thread From: Brian Gernhardt @ 2012-10-25 3:54 UTC (permalink / raw) To: Git List I seem to write these kinds of e-mails fairly regularly... When running t9401-git-cvsserver-crlf: expecting success: check_status_options cvswork2 textfile.c "" && check_status_options cvswork2 binfile.bin -kb && check_status_options cvswork2 .gitattributes "" && check_status_options cvswork2 mixedUp.c -kb && check_status_options cvswork2 multiline.c -kb && check_status_options cvswork2 multilineTxt.c "" && check_status_options cvswork2/subdir withCr.bin -kb && check_status_options cvswork2 subdir/withCr.bin -kb && check_status_options cvswork2/subdir file.h "" && check_status_options cvswork2 subdir/file.h "" && check_status_options cvswork2/subdir unspecified.other "" && check_status_options cvswork2/subdir newfile.bin "" && check_status_options cvswork2/subdir newfile.c "" not ok - 12 cvs status - sticky options I have tracked it down to a sed expression that is parsing the output of cvs status: 49: got="$(sed -n -e 's/^\s*Sticky Options:\s*//p' "${WORKDIR}/status.out")" The problem is that cvs outputs "Sticky Options:\t\t(none)\n", but OS X's sed doesn't recognize the \s shortcut. (According to re_format(5), \s is part of the "enhanced" regex format, which sed doesn't use.) It works if I change \s to [[:space:]], but I don't know how portable that is. ~~ Brian Gernhardt ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: t9401 fails with OS X sed 2012-10-25 3:54 t9401 fails with OS X sed Brian Gernhardt @ 2012-10-25 5:04 ` Geert Bosch 2012-10-25 8:41 ` Jeff King 0 siblings, 1 reply; 10+ messages in thread From: Geert Bosch @ 2012-10-25 5:04 UTC (permalink / raw) To: Brian Gernhardt; +Cc: Git List On Oct 24, 2012, at 23:54, Brian Gernhardt <brian@gernhardtsoftware.com> wrote: > It works if I change \s to [[:space:]], but I don't know how portable that is. As \s is shorthand for the POSIX character class [:space:], I'd say the latter should be more portable: anything accepting the shorthand should also accept the full character class. If not, you probably only care about horizontal tab and space, for which you could just use a simple regular expression. Just a literal space and tab character between square brackets is probably going to be most portable, though not most readable. -Geert ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: t9401 fails with OS X sed 2012-10-25 5:04 ` Geert Bosch @ 2012-10-25 8:41 ` Jeff King 2012-10-25 12:51 ` Torsten Bögershausen 0 siblings, 1 reply; 10+ messages in thread From: Jeff King @ 2012-10-25 8:41 UTC (permalink / raw) To: Geert Bosch; +Cc: Brian Gernhardt, Git List On Thu, Oct 25, 2012 at 01:04:11AM -0400, Geert Bosch wrote: > On Oct 24, 2012, at 23:54, Brian Gernhardt <brian@gernhardtsoftware.com> wrote: > > > It works if I change \s to [[:space:]], but I don't know how portable that is. > > As \s is shorthand for the POSIX character class [:space:], I'd say the latter > should be more portable: anything accepting the shorthand should also accept > the full character class. If not, you probably only care about horizontal tab > and space, for which you could just use a simple regular expression. Just a > literal space and tab character between square brackets is probably going to be > most portable, though not most readable. I agree that the POSIX character class would be more portable than "\s", but we do not have any existing uses of them, and I would worry a little about older systems like Solaris. If we can simply use a literal space and tab, that seems like the safest. Brian, can you work up a patch? -Peff ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: t9401 fails with OS X sed 2012-10-25 8:41 ` Jeff King @ 2012-10-25 12:51 ` Torsten Bögershausen 2012-10-25 15:58 ` [PATCH] Use character class for sed expression instead of \s Ben Walton 0 siblings, 1 reply; 10+ messages in thread From: Torsten Bögershausen @ 2012-10-25 12:51 UTC (permalink / raw) To: Jeff King Cc: Geert Bosch, Brian Gernhardt, Git List, Torsten Bögershausen On 25.10.12 10:41, Jeff King wrote: > On Thu, Oct 25, 2012 at 01:04:11AM -0400, Geert Bosch wrote: > >> On Oct 24, 2012, at 23:54, Brian Gernhardt <brian@gernhardtsoftware.com> wrote: >> >>> It works if I change \s to [[:space:]], but I don't know how portable that is. >> >> As \s is shorthand for the POSIX character class [:space:], I'd say the latter >> should be more portable: anything accepting the shorthand should also accept >> the full character class. If not, you probably only care about horizontal tab >> and space, for which you could just use a simple regular expression. Just a >> literal space and tab character between square brackets is probably going to be >> most portable, though not most readable. > > I agree that the POSIX character class would be more portable than "\s", > but we do not have any existing uses of them, and I would worry a little > about older systems like Solaris. If we can simply use a literal space > and tab, that seems like the safest. > > Brian, can you work up a patch? > > -Peff Would this be portable: (It works on my Mac OS X box after installing cvs) But I don't have solaris diff --git a/t/t9401-git-cvsserver-crlf.sh b/t/t9401-git-cvsserver-crlf.sh index cdb8360..f2ec9d2 100755 --- a/t/t9401-git-cvsserver-crlf.sh +++ b/t/t9401-git-cvsserver-crlf.sh @@ -46,7 +46,7 @@ check_status_options() { echo "Error from cvs status: $1 $2" >> "${WORKDIR}/marked.log" return 1; fi - got="$(sed -n -e 's/^\s*Sticky Options:\s*//p' "${WORKDIR}/status.out")" + got="$(tr '\t' ' ' < "${WORKDIR}/status.out" | sed -n -e 's/^ *Sticky Options: *//p')" expect="$3" if [ x"$expect" = x"" ] ; then expect="(none)" ^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH] Use character class for sed expression instead of \s 2012-10-25 12:51 ` Torsten Bögershausen @ 2012-10-25 15:58 ` Ben Walton 2012-10-25 16:00 ` Brian Gernhardt 2012-10-26 12:38 ` Jeff King 0 siblings, 2 replies; 10+ messages in thread From: Ben Walton @ 2012-10-25 15:58 UTC (permalink / raw) To: tboegi, peff, bosch, brian, git; +Cc: Ben Walton Sed on Mac OS X doesn't handle \s in a sed expressions so use a more portable character set expression instead. Signed-off-by: Ben Walton <bdwalton@gmail.com> --- Hi Torsten, I think this would be a nicer fix for the issue although your solution should work as well. Thanks -Ben t/t9401-git-cvsserver-crlf.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/t/t9401-git-cvsserver-crlf.sh b/t/t9401-git-cvsserver-crlf.sh index cdb8360..1c5bc84 100755 --- a/t/t9401-git-cvsserver-crlf.sh +++ b/t/t9401-git-cvsserver-crlf.sh @@ -46,7 +46,7 @@ check_status_options() { echo "Error from cvs status: $1 $2" >> "${WORKDIR}/marked.log" return 1; fi - got="$(sed -n -e 's/^\s*Sticky Options:\s*//p' "${WORKDIR}/status.out")" + got="$(sed -n -e 's/^[ ]*Sticky Options:[ ]*//p' "${WORKDIR}/status.out")" expect="$3" if [ x"$expect" = x"" ] ; then expect="(none)" -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] Use character class for sed expression instead of \s 2012-10-25 15:58 ` [PATCH] Use character class for sed expression instead of \s Ben Walton @ 2012-10-25 16:00 ` Brian Gernhardt 2012-10-25 16:28 ` Torsten Bögershausen 2012-10-26 12:38 ` Jeff King 1 sibling, 1 reply; 10+ messages in thread From: Brian Gernhardt @ 2012-10-25 16:00 UTC (permalink / raw) To: Ben Walton; +Cc: tboegi, peff, bosch, git On Oct 25, 2012, at 11:58 AM, Ben Walton <bdwalton@gmail.com> wrote: > Sed on Mac OS X doesn't handle \s in a sed expressions so use a more > portable character set expression instead. > > Signed-off-by: Ben Walton <bdwalton@gmail.com> Acked-by: Brian Gernhardt <brian@gernhardtsoftware.com> I have an identical change sitting in my git.git, I've just been too distracted by other things to commit and send it. ~~ Brian Gernhardt ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Use character class for sed expression instead of \s 2012-10-25 16:00 ` Brian Gernhardt @ 2012-10-25 16:28 ` Torsten Bögershausen 2012-10-25 18:08 ` Ben Walton 0 siblings, 1 reply; 10+ messages in thread From: Torsten Bögershausen @ 2012-10-25 16:28 UTC (permalink / raw) To: Brian Gernhardt; +Cc: Ben Walton, tboegi, peff, bosch, git On 25.10.12 18:00, Brian Gernhardt wrote: > > On Oct 25, 2012, at 11:58 AM, Ben Walton <bdwalton@gmail.com> wrote: > >> Sed on Mac OS X doesn't handle \s in a sed expressions so use a more >> portable character set expression instead. >> >> Signed-off-by: Ben Walton <bdwalton@gmail.com> > > Acked-by: Brian Gernhardt <brian@gernhardtsoftware.com> > > I have an identical change sitting in my git.git, I've just been too distracted by other things to commit and send it. > > ~~ Brian Gernhardt Much nicer, indeed. BTW: While we are talking CVS: (I installed a fresh version) cvs --version Concurrent Versions System (CVS) 1.11.23 (client/server) And t9200 fails: git checkout t9200-git-cvsexportcommit.sh tb@birne:~/projects/git/git.pu/t> ./t9200-git-cvsexportcommit.sh cvs [init aborted]: Cannot initialize repository under existing CVSROOT: `/Users/tb/projects/git/git.pu/t/trash directory.t9200-git-cvsexportcommit' FATAL: Unexpected exit with code 1 The following fixes it, but there are possibly better solutions. Any comments/suggestions ? diff t9200-git-cvsexportcommit.sh t9200-git-cvsexportcommit.tb.sh 28,29c28 < mkdir "$CVSROOT" && < cvs init && --- > (cvs init || mkdir "$CVSROOT" && cvs init ) && ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Use character class for sed expression instead of \s 2012-10-25 16:28 ` Torsten Bögershausen @ 2012-10-25 18:08 ` Ben Walton 2012-10-25 20:09 ` Torsten Bögershausen 0 siblings, 1 reply; 10+ messages in thread From: Ben Walton @ 2012-10-25 18:08 UTC (permalink / raw) To: Torsten Bögershausen; +Cc: Brian Gernhardt, peff, bosch, git Hi Torsten, On Thu, Oct 25, 2012 at 5:28 PM, Torsten Bögershausen <tboegi@web.de> wrote: > BTW: While we are talking CVS: (I installed a fresh version) > cvs --version > Concurrent Versions System (CVS) 1.11.23 (client/server) I have 1.12.13-MirDebian-8 here. > And t9200 fails: > git checkout t9200-git-cvsexportcommit.sh > tb@birne:~/projects/git/git.pu/t> ./t9200-git-cvsexportcommit.sh > cvs [init aborted]: Cannot initialize repository under existing CVSROOT: `/Users/tb/projects/git/git.pu/t/trash directory.t9200-git-cvsexportcommit' > FATAL: Unexpected exit with code 1 I'm not able to reproduce this manually...are you able to make it fail this way outside of the test harness? $ CVSROOT=$PWD/bw $ export CVSROOT $ mkdir $CVSROOT && cvs init && echo ok ok $ rm -rf $CVSROOT $ cvs init && echo ok ok >> (cvs init || mkdir "$CVSROOT" && cvs init ) && If your version of cvs fails the checks above in manual testing, we could see if there is a flag that works in all (old and new) versions to override the failure if CVSROOT exists. Otherwise, this isn't a bad fix, I don't think. If your version does fail the manual checks, I think it's likely a regression that was introduced and later reverted. I don't see those strings inside my cvs binary at all...? HTH. Thanks -Ben -- --------------------------------------------------------------------------------------------------------------------------- Take the risk of thinking for yourself. Much more happiness, truth, beauty and wisdom will come to you that way. -Christopher Hitchens --------------------------------------------------------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] Use character class for sed expression instead of \s 2012-10-25 18:08 ` Ben Walton @ 2012-10-25 20:09 ` Torsten Bögershausen 0 siblings, 0 replies; 10+ messages in thread From: Torsten Bögershausen @ 2012-10-25 20:09 UTC (permalink / raw) To: Ben Walton; +Cc: Torsten Bögershausen, Brian Gernhardt, peff, bosch, git On 10/25/2012 08:08 PM, Ben Walton wrote: > Hi Torsten, > > On Thu, Oct 25, 2012 at 5:28 PM, Torsten Bögershausen <tboegi@web.de> wrote: > >> BTW: While we are talking CVS: (I installed a fresh version) >> cvs --version >> Concurrent Versions System (CVS) 1.11.23 (client/server) > > I have 1.12.13-MirDebian-8 here. > >> And t9200 fails: >> git checkout t9200-git-cvsexportcommit.sh >> tb@birne:~/projects/git/git.pu/t> ./t9200-git-cvsexportcommit.sh >> cvs [init aborted]: Cannot initialize repository under existing CVSROOT: `/Users/tb/projects/git/git.pu/t/trash directory.t9200-git-cvsexportcommit' >> FATAL: Unexpected exit with code 1 > > I'm not able to reproduce this manually...are you able to make it fail > this way outside of the test harness? > > $ CVSROOT=$PWD/bw > $ export CVSROOT > $ mkdir $CVSROOT && cvs init && echo ok > ok > $ rm -rf $CVSROOT > $ cvs init && echo ok > ok > >>> (cvs init || mkdir "$CVSROOT" && cvs init ) && > > If your version of cvs fails the checks above in manual testing, we > could see if there is a flag that works in all (old and new) versions > to override the failure if CVSROOT exists. Otherwise, this isn't a > bad fix, I don't think. > > If your version does fail the manual checks, I think it's likely a > regression that was introduced and later reverted. I don't see those > strings inside my cvs binary at all...? > > HTH. > > Thanks > -Ben > Hej Ben, thanks for looking into that - here some short answers: a) The manual test (as you describe it) succeeds b) The test case 9200 failes, and now I know why: diff --git a/t/t9200-git-cvsexportcommit.sh b/t/t9200-git-cvsexportcommit.sh index b59be9a..d2c3c37 100755 --- a/t/t9200-git-cvsexportcommit.sh +++ b/t/t9200-git-cvsexportcommit.sh @@ -19,7 +19,7 @@ then test_done fi -CVSROOT=$PWD/cvsroot +CVSROOT=$PWD/xx CVSWORK=$PWD/cvswork GIT_DIR=$PWD/.git export CVSROOT CVSWORK GIT_DIR c) I need to send a patch tomorrow d) FYI: I compiled cvs from scratch, from a file called cvs-1.11.23.tar.gz and the code is in cvs-1.11.23/src/mkmodules.c:942 if (root_dir && strcmp (root_dir, current_parsed_root->directory)) error (1, 0, "Cannot initialize repository under existing CVSROOT: `%s'", root_dir); free (root_dir); /Torsten ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] Use character class for sed expression instead of \s 2012-10-25 15:58 ` [PATCH] Use character class for sed expression instead of \s Ben Walton 2012-10-25 16:00 ` Brian Gernhardt @ 2012-10-26 12:38 ` Jeff King 1 sibling, 0 replies; 10+ messages in thread From: Jeff King @ 2012-10-26 12:38 UTC (permalink / raw) To: Ben Walton; +Cc: tboegi, bosch, brian, git On Thu, Oct 25, 2012 at 04:58:19PM +0100, Ben Walton wrote: > Sed on Mac OS X doesn't handle \s in a sed expressions so use a more > portable character set expression instead. > > Signed-off-by: Ben Walton <bdwalton@gmail.com> Thanks, I think this simple solution is the best. -Peff ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2012-10-26 12:39 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-10-25 3:54 t9401 fails with OS X sed Brian Gernhardt 2012-10-25 5:04 ` Geert Bosch 2012-10-25 8:41 ` Jeff King 2012-10-25 12:51 ` Torsten Bögershausen 2012-10-25 15:58 ` [PATCH] Use character class for sed expression instead of \s Ben Walton 2012-10-25 16:00 ` Brian Gernhardt 2012-10-25 16:28 ` Torsten Bögershausen 2012-10-25 18:08 ` Ben Walton 2012-10-25 20:09 ` Torsten Bögershausen 2012-10-26 12:38 ` Jeff King
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).