From: newren@gmail.com
To: git@vger.kernel.org
Cc: Johannes.Schindelin@gmx.de, gitster@pobox.com, pasky@suse.cz,
Elijah Newren <newren@gmail.com>
Subject: [PATCH] git-filter-branch: avoid collisions with variables in eval'ed commands
Date: Wed, 25 Mar 2009 15:13:01 -0600 [thread overview]
Message-ID: <1238015581-12801-1-git-send-email-newren@gmail.com> (raw)
From: Elijah Newren <newren@gmail.com>
Avoid using simple variable names like 'i', since user commands are eval'ed
and may clash with and overwrite our values.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
I discovered this a few months ago, but apparently never got around to
sending it earlier. Anyway, without this patch in a repository with a
file called 'world' I see the following behavior:
$ git filter-branch --tree-filter '
for i in $(find . -type f); do
if ( file $i | grep "\btext\b" > /dev/null ); then
perl -i -ple "s/\\\$(Id|Date|Source|Header|CVSHeader|Author|Revision):[^\
\$]*\\$/\\$\1\\$/" $i;
fi;
done ' -- --all
Rewrite 7a78604e90b9debfaa6a755019b5d3df541abcba (1/6)/usr/bin/git-filter-branch
: line 249: ./world+1: syntax error: operand expected (error token is "./world+1
")
In case anyone is wondering: This isn't the right way to nuke CVS keywords.
It's a good start, but it'll miss a few files (particularly with older
versions of the 'file' program) due to some types such as 'FORTRAN program
source' not containing 'text'. Also, it's incredibly slow to the point
that I dropped filter-branch entirely and wrote a 'git_fast_filter' helper
(serving as a pipe between fast-export and fast-import) that I'll soon be
making available.
git-filter-branch.sh | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 20f6f51..5da63b1 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -272,10 +272,10 @@ test $commits -eq 0 && die "Found nothing to rewrite"
# Rewrite the commits
-i=0
+git_filter_branch_count=0
while read commit parents; do
- i=$(($i+1))
- printf "\rRewrite $commit ($i/$commits)"
+ git_filter_branch_count=$(($git_filter_branch_count+1))
+ printf "\rRewrite $commit ($git_filter_branch_count/$commits)"
case "$filter_subdir" in
"")
--
1.6.0.6
next reply other threads:[~2009-03-25 21:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-25 21:13 newren [this message]
2009-03-25 21:24 ` [PATCH] git-filter-branch: avoid collisions with variables in eval'ed commands Petr Baudis
2009-03-25 21:33 ` Elijah Newren
2009-03-25 21:51 ` newren
2009-03-25 21:58 ` Petr Baudis
2009-03-25 23:34 ` 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=1238015581-12801-1-git-send-email-newren@gmail.com \
--to=newren@gmail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pasky@suse.cz \
/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 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).