Re: [PATCH] pre-commit.sample: don't use [...] around a tr range
- From
Jim Meyering <jim@meyering.net>
- Date
- Sep 21, 2009, 11:00 UTC
- Message-ID
- <87ocp4imul.fsf@meyering.net>
- In-Reply-To
- <81b0412b0909210243h58633509r7b427c69f62928fe@mail.gmail.com>
Alex Riesen wrote:
Show 8 quoted lines
> On Mon, Sep 21, 2009 at 11:09, Jim Meyering <jim@meyering.net> wrote: >> However, if the use of [] is deliberate, because git still >> cares about portability to ancient SYSV versions of tr that >> require that notation, then let me know and I'll undo that part >> of the change and add a comment to that effect. > > We have (had?) people trying to support Git on HP-UX and SunOS. > Do these count?
I had my doubts, but have just confirmed that Solaris 10's /usr/bin/tr is still doing it the SYSV way:
$ echo foo | LC_ALL=C /usr/bin/tr a-z A-Z
fooThere, you have to use /usr/xpg4/bin/tr to get the expected behavior:
$ echo foo | LC_ALL=C /usr/xpg4/bin/tr a-z A-Z
FOOSo you're right. Thanks! Here's an updated patch:
>From 4048a5b393fa5f35dfe8157e98a6ea475b0efb2d Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@redhat.com> Date: Mon, 21 Sep 2009 10:58:02 +0200 Subject: [PATCH] pre-commit.sample: add comment re tr portability; fix grammar
Add a comment explaining why square brackets around a tr range are not only ok, but actually required in this case. Correct spelling and grammar.
Signed-off-by: Jim Meyering <meyering@redhat.com> --- templates/hooks--pre-commit.sample | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/templates/hooks--pre-commit.sample b/templates/hooks--pre-commit.sample index b11ad6a..128c8cc 100755 --- a/templates/hooks--pre-commit.sample +++ b/templates/hooks--pre-commit.sample @@ -14,15 +14,18 @@ allownonascii=$(git config hooks.allownonascii) # them from being added to the repository. We exploit the fact that the # printable range starts at the space character and ends with tilde. if [ "$allownonascii" != "true" ] && + # Note that the use of brackets around a tr range is ok here, (it's + # even required, for portability to Solaris 10's /usr/bin/tr), since + # the square bracket bytes happen to fall in the designated range. test "$(git diff --cached --name-only --diff-filter=A -z | LC_ALL=C tr -d '[ -~]\0')" then - echo "Error: Attempt to add a non-ascii filename." + echo "Error: Attempt to add a non-ascii file name." echo - echo "This can cause problems if you want to work together" - echo "with people on other platforms than you." + echo "This can cause problems if you want to work" + echo "with people on other platforms." echo - echo "To be portable it is adviseable to rename the file ..." + echo "To be portable it is advisable to rename the file ..." echo echo "If you know what you are doing you can disable this" echo "check using:" -- 1.6.5.rc1.214.g13c5a