From: Johannes Sixt <j.sixt@viscovery.net>
To: Fredrik Gustafsson <iveqy@iveqy.com>
Cc: git@vger.kernel.org, jens.lehmann@web.de, gitster@pobox.com
Subject: Re: [PATCH] Remove perl dependency from git-submodule.sh
Date: Thu, 31 May 2012 11:19:04 +0200 [thread overview]
Message-ID: <4FC73788.6070805@viscovery.net> (raw)
In-Reply-To: <1338454126-30441-1-git-send-email-iveqy@iveqy.com>
Am 5/31/2012 10:48, schrieb Fredrik Gustafsson:
> Rewrote a perl section in sh.
> The code may be a bit slower (doing grep on strings instead of using
> perl-lists).
"A lot" would be more correct on Windows :-) But it can be avoided, I think.
> module_list()
> {
> + unmerged=
> + null_sha1=0000000000000000000000000000000000000000
> git ls-files --error-unmatch --stage -- "$@" |
> - perl -e '
> - my %unmerged = ();
> - my ($null_sha1) = ("0" x 40);
> - while (<STDIN>) {
> - chomp;
> - my ($mode, $sha1, $stage, $path) =
> - /^([0-7]+) ([0-9a-f]{40}) ([0-3])\t(.*)$/;
> - next unless $mode eq "160000";
> - if ($stage ne "0") {
> - if (!$unmerged{$path}++) {
> - print "$mode $null_sha1 U\t$path\n";
> - }
> - next;
> - }
> - print "$_\n";
> - }
> - '
> + while read mode sha1 stage path
Be prepared for backslashes in the path name:
while read -r mode sha1 stage path
> + do
> + if test $mode -eq 160000
$mode is not a number, but a string: test "$mode" = 160000
> + then
> + if test $stage -ne 0
That $stage looks like a number is of no importance, either.
> + then
> + if test -z "$(echo $unmerged | grep "|$path|")"
> + then
> + echo "$mode $null_sha1 U\t$path"
> + fi
> + unmerged="$unmerged|$path|"
IIUC, the purpose of $unmerged and this check is to avoid that an unmerged
path is dumped for each stage that is listed by ls-files. Therefore it
should be sufficient to just check that the current path is different from
the last path.
> + else
> + echo "$mode $sha1 $stage\t$path"
> + fi
> + fi
> + done
> }
>
> #
-- Hannes
next prev parent reply other threads:[~2012-05-31 9:19 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-31 8:48 [PATCH] Remove perl dependency from git-submodule.sh Fredrik Gustafsson
2012-05-31 9:07 ` Ævar Arnfjörð Bjarmason
2012-05-31 10:37 ` Fredrik Gustafsson
2012-05-31 9:19 ` Johannes Sixt [this message]
2012-05-31 10:40 ` Fredrik Gustafsson
2012-05-31 11:25 ` Johannes Sixt
2012-05-31 17:49 ` Junio C Hamano
2012-05-31 18:48 ` Fredrik Gustafsson
2012-05-31 19:26 ` 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=4FC73788.6070805@viscovery.net \
--to=j.sixt@viscovery.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=iveqy@iveqy.com \
--cc=jens.lehmann@web.de \
/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.