From: Pete Wyckoff <pw@padd.com>
To: git@vger.kernel.org
Cc: Chris Goard <cgoard@gmail.com>
Subject: [PATCH] git p4: RCS expansion should not span newlines
Date: Sun, 4 Nov 2012 17:04:02 -0500 [thread overview]
Message-ID: <20121104220402.GA9160@padd.com> (raw)
In-Reply-To: <CACtYWOYOSxmogJHy70McsRVf0m2PVuu=q+pDZ2-gAza7vpeEiA@mail.gmail.com>
This bug was introduced in cb585a9 (git-p4: keyword
flattening fixes, 2011-10-16). The newline character
is indeed special, and $File$ expansions should not try
to match across multiple lines.
Based-on-patch-by: Chris Goard <cgoard@gmail.com>
Signed-off-by: Pete Wyckoff <pw@padd.com>
---
cgoard@gmail.com wrote on Mon, 16 Jul 2012 12:49 -0700:
> Hi. Noticed an apparent bug in git-p4 related to RCS keyword
> expansion. Some files in our Perforce repository have malformed RCS
> keywords, e.g. "$Revision:" without a closing $. Perforce doesn't
> expand these, obviously, but when a change to this file is imported
> into git, everything up to the next $, on another line much later in
> the file, is deleted. Seems to be due to multi-line matching of RCS
> keywords. One fix is:
>
> diff --git a/git-p4.py b/git-p4.py
> index f895a24..ae7b431 100755
> --- a/git-p4.py
> +++ b/git-p4.py
> @@ -215,7 +215,7 @@ def p4_keywords_regexp_for_type(base, type_mods):
> pattern = r"""
> \$ # Starts with a dollar, followed by...
> (%s) # one of the keywords, followed by...
> - (:[^$]+)? # possibly an old expansion, followed by...
> + (:[^\n$]+)? # possibly an old expansion, followed by...
> \$ # another dollar
> """ % kwords
> return pattern
Chris,
I finally got around to building a test-case for this. The bug
has been in since around 1.7.7, so I won't call this exactly
urgent, even though it is blatantly buggy as is.
Will try to get it into the next release.
Thanks,
-- Pete
git-p4.py | 2 +-
t/t9810-git-p4-rcs.sh | 19 +++++++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/git-p4.py b/git-p4.py
index 882b1bb..7d6c928 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -227,7 +227,7 @@ def p4_keywords_regexp_for_type(base, type_mods):
pattern = r"""
\$ # Starts with a dollar, followed by...
(%s) # one of the keywords, followed by...
- (:[^$]+)? # possibly an old expansion, followed by...
+ (:[^$\n]+)? # possibly an old expansion, followed by...
\$ # another dollar
""" % kwords
return pattern
diff --git a/t/t9810-git-p4-rcs.sh b/t/t9810-git-p4-rcs.sh
index fe30ad8..0c2fc3e 100755
--- a/t/t9810-git-p4-rcs.sh
+++ b/t/t9810-git-p4-rcs.sh
@@ -155,6 +155,25 @@ test_expect_success 'cleanup after failure' '
)
'
+# perl $File:: bug check
+test_expect_success 'ktext expansion should not expand multi-line $File::' '
+ (
+ cd "$cli" &&
+ cat >lv.pm <<-\EOF
+ my $wanted = sub { my $f = $File::Find::name;
+ if ( -f && $f =~ /foo/ ) {
+ EOF
+ p4 add -t ktext lv.pm &&
+ p4 submit -d "lv.pm"
+ ) &&
+ test_when_finished cleanup_git &&
+ git p4 clone --dest="$git" //depot &&
+ (
+ cd "$git" &&
+ test_cmp "$cli/lv.pm" lv.pm
+ )
+'
+
#
# Do not scrub anything but +k or +ko files. Sneak a change into
# the cli file so that submit will get a conflict. Make sure that
--
1.7.12.1.457.g468b3ef
next parent reply other threads:[~2012-11-04 22:08 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CACtYWOYOSxmogJHy70McsRVf0m2PVuu=q+pDZ2-gAza7vpeEiA@mail.gmail.com>
2012-11-04 22:04 ` Pete Wyckoff [this message]
2012-11-08 17:47 ` [PATCH] git p4: RCS expansion should not span newlines Jeff King
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=20121104220402.GA9160@padd.com \
--to=pw@padd.com \
--cc=cgoard@gmail.com \
--cc=git@vger.kernel.org \
/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.