From: Michael J Gruber <git@drmicha.warpmail.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: Johannes Sixt <j.sixt@viscovery.net>,
git@vger.kernel.org, Andrei Thorp <garoth@gmail.com>
Subject: Re: [PATCHv2 4/4] git submodule: Fix handling of // and /.. in paths for added submodules
Date: Thu, 26 Feb 2009 10:05:16 +0100 [thread overview]
Message-ID: <49A65B4C.305@drmicha.warpmail.net> (raw)
In-Reply-To: <7v1vtm1a6b.fsf@gitster.siamese.dyndns.org>
Junio C Hamano venit, vidit, dixit 25.02.2009 22:25:
> Johannes Sixt <j.sixt@viscovery.net> writes:
>
>> Michael J Gruber schrieb:
>>> Johannes Sixt venit, vidit, dixit 25.02.2009 15:06:
>>>> I think we have so far avoided \+ in sed expressions for portability reasons.
>>> Hmmpf. Is it that new, or gnu specific? I'm always afraid of portability
>>> issues with bash but wasn't aware of sed being an issue as well.
>>>
>>> In any case, would 's|\\*|/|g' be better (more portable) then?
>> You mean 's|//*|/|g'; yes, that is definitly portable.
>>
>>> Well, how is
>>>
>>> echo a/b/c/../../d | sed -e ':start;s|\([^/]*\)/\.\./||g;tstart'
>>> a/d
>>>
>>> I meant: how portable is...
>> I don't know... Let's see: My AIX 4.3.3 sed understands it if it is not
>> all on a single line, and that says a lot. Specifically, I tried this:
>>
>> echo a/b/c/../../d | sed -e ':start
>> s|\([^/]*\)/\.\./||
>> tstart
>> '
>>
>> and got the desired result:
>>
>> a/d
>>
>> Note that the 'g' flag is not necessary in this case.
>>
>> OTOH, this sed doesn't understand #comments :-/
>
> Historically, sed was much worse than the shell when it came to the
> portability issues, especially before people started to use bash, which
> tipped the balance a bit by worsening the situation for the shell side.
>
> The sed scripts in the more important parts of scripted Porcelains avoid
> multiple commands on a single line concatenated with ";" mostly by inertia
> on my side, but it was acquired exactly from this kind of portability
> mess. IIRC, AIX's was the worst offender. It also got "/A/../B/ { ... }"
> wrong in earlier versions.
I'm a bit confused now. Are you saying that "git-submodule.sh" should
avoid the multiple lines in sed (which work in AIX 4.3.3)? I don't know
how to simplify a/b/c/../../ easily then. Of course one could loop
around in shell rather than using sed's "goto", but that looks ugly.
I think that's my only question before doing a v3 which will be a good
"cd citizen" in tests and test for more idiosyncracies.
Oh wait: Would it be worthwhile to have that shell version of
normalize_path_copy() in git-sh-setup instead?
Michael
next prev parent reply other threads:[~2009-02-26 9:06 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <80055d7c0902241541o5c8fad50ra4eace5919bcf6df@mail.gmail.com>
2009-02-24 23:56 ` Fwd: Git Submodule Misbehaviour With ./ Andrei Thorp
2009-02-25 11:03 ` [PATCH 0/2] Fix git submodule add for paths with ./ Michael J Gruber
2009-02-25 11:03 ` [PATCH 1/2] git submodule: Add test cases for git submodule add Michael J Gruber
2009-02-25 11:03 ` [PATCH 2/2] git submodule: Fix adding of submodules at paths with ./ Michael J Gruber
2009-02-25 11:21 ` Johannes Sixt
2009-02-25 12:35 ` Michael J Gruber
2009-02-25 13:04 ` Johannes Sixt
2009-02-25 13:26 ` [PATCHv2 0/4] Fix git submodule add for funky paths Michael J Gruber
2009-02-25 13:26 ` [PATCHv2 1/4] git submodule: Add test cases for git submodule add Michael J Gruber
2009-02-25 13:26 ` [PATCHv2 2/4] git submodule: Fix adding of submodules at paths with ./ Michael J Gruber
2009-02-25 13:26 ` [PATCHv2 3/4] git submodule: Add more tests for add with funky paths Michael J Gruber
2009-02-25 13:26 ` [PATCHv2 4/4] git submodule: Fix handling of // and /.. in paths for added submodules Michael J Gruber
2009-02-25 14:06 ` Johannes Sixt
2009-02-25 14:33 ` Michael J Gruber
2009-02-25 15:03 ` Johannes Sixt
2009-02-25 21:25 ` Junio C Hamano
2009-02-26 9:05 ` Michael J Gruber [this message]
2009-02-26 17:04 ` Junio C Hamano
2009-03-03 12:39 ` [PATCHv3 0/2] git submodule: normalize paths before adding Michael J Gruber
2009-03-03 12:39 ` [PATCHv3 1/2] git submodule: Add test cases for git submodule add Michael J Gruber
2009-03-03 12:39 ` [PATCHv3 2/2] git submodule: Fix adding of submodules at paths with ./, .. and // Michael J Gruber
2009-03-03 13:08 ` Johannes Sixt
2009-03-03 14:09 ` Michael J Gruber
2009-03-03 15:08 ` [PATCHv4 0/2] git submodule: normalize paths before adding Michael J Gruber
2009-03-03 15:08 ` [PATCHv4 1/2] git submodule: Add test cases for git submodule add Michael J Gruber
2009-03-03 15:08 ` [PATCHv4 2/2] git submodule: Fix adding of submodules at paths with ./, .. and // Michael J Gruber
2009-03-03 15:28 ` Johannes Sixt
2009-03-03 15:39 ` Michael J Gruber
2009-03-03 16:32 ` [PATCHv4 0/2] git submodule: normalize paths before adding Junio C Hamano
2009-03-03 15:36 ` [PATCHv3 2/2] git submodule: Fix adding of submodules at paths with ./, .. and // Junio C Hamano
2009-03-03 15:48 ` Michael J Gruber
2009-03-03 14:29 ` Johannes Schindelin
2009-03-03 14:58 ` Michael J Gruber
2009-02-25 21:25 ` [PATCH 2/2] git submodule: Fix adding of submodules at paths with ./ Junio C Hamano
2009-02-25 21:24 ` [PATCH 1/2] git submodule: Add test cases for git submodule add Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49A65B4C.305@drmicha.warpmail.net \
--to=git@drmicha.warpmail.net \
--cc=garoth@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=j.sixt@viscovery.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.