Fix a critical bug in git-cvsexportcommit.perl
I fixed a long standing bug in git-cvsexportcommit.perl script which corrupt my Perl code several times. This time I figure it out. It's about keyword expansion. Take a simple example, a Perl code like this:
printf "Perl/Tk $Tk::Version ($Tk::platform)\n";
will be incorrectly unexpand by git-cvsexportcommit.perl to:
printf "Perl/Tk $Tk$Tk::platform)\n";
This happens when I try to export a git commit to a CVS working directory *with keyword expansion turned off*. git-cvsexportcommit will try to simulate what CVS does on unexpanding keywords. However, it *DOES NOT* realize only valid keywords should be unexpanded. Please help apply this patch.
Thanks.
Luke Lee
Quoted 1 line
From
a33096156e376924d3a7ac2b5a42877f9aedee58Mon Sep 17 00:00:00 2001
From: Luke Lee <[email protected]>
Date: Wed, 24 Sep 2014 14:38:17 +0800
Subject: [PATCH] Fix a critical bug in git-cvsexportcommit.perl about
unexpanding keywords which incorrectly delete codes that are not expanded keywords.
--- git-cvsexportcommit.perl | 2 +- 1 file changed, 1 insertions(+), 1 deletion(-)
git-cvsexportcommit.perl +1 -1
@@ -309,7 +309,8 @@ foreach my $f (@files) { while (<FILTER_IN>) { my $line = $_; - $line =~ s/\$([A-Z][a-z]+):[^\$]+\$/\$$1\$/g; + $line =~ s/\$(Author|Date|Header|Id|Locker|Log|RCSfile|Revision|Source|State):[^:\$][^\$]+\$/\$$1\$/g; print FILTER_OUT $line; } close FILTER_IN;
--
2.1.1.303.ga330961.dirty
Quoted 10 lines · Luke Lee
I fixed a long standing bug in git-cvsexportcommit.perl script which corrupt my Perl code several times. This time I figure it out. It's about keyword expansion. Take a simple example, a Perl code like this:
printf "Perl/Tk $Tk::Version ($Tk::platform)\n";will be incorrectly unexpand by git-cvsexportcommit.perl to:
printf "Perl/Tk $Tk$Tk::platform)\n";
Quoted 8 lines
This happens when I try to export a git commit to a CVS working directory *with keyword expansion turned off*. git-cvsexportcommit will try to simulate what CVS does on unexpanding keywords. However, it *DOES NOT* realize only valid keywords should be unexpanded. Please help apply this patch.
Thanks.
Luke Lee
Thanks for sending a patch. :)
Quoted 7 lines
From
a33096156e376924d3a7ac2b5a42877f9aedee58Mon Sep 17 00:00:00 2001
From: Luke Lee <[email protected]>
Date: Wed, 24 Sep 2014 14:38:17 +0800
Subject: [PATCH] Fix a critical bug in git-cvsexportcommit.perl about
unexpanding keywords which incorrectly delete codes that are not expanded keywords.
Please have a look at Documentation/SubmittingPatches, also found online at
https://github.com/git/git/blob/master/Documentation/SubmittingPatches
Specially look at section "(2) Describe your changes well." So the headline could be shorter and then in the body of the commit message you may want to be more descriptive
Also look at section "(5) Sign your work"
This is to make sure you're legally allowed to send in the patch, i.e. you're doing it on your own time or your employer allowed you to send code here to the mailing list.
Quoted 26 lines
--- git-cvsexportcommit.perl | 2 +- 1 file changed, 1 insertions(+), 1 deletion(-)git-cvsexportcommit.perl +1
-2@@ -309,7 +309,8 @@ foreach my $f (@files) { while (<FILTER_IN>) { my $line = $_; - $line =~ s/\$([A-Z][a-z]+):[^\$]+\$/\$$1\$/g; + $line =~ s/\$(Author|Date|Header|Id|Locker|Log|RCSfile|Revision|Source|State):[^:\$][^\$]+\$/\$$1\$/g; print FILTER_OUT $line; } close FILTER_IN; --2.1.1.303.ga330961.dirty
--
To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 4 lines · Stefan Beller
Please have a look at
Documentation/SubmittingPatches, also found online at
https://github.com/git/git/blob/master/Documentation/SubmittingPatches
Quoted 8 lines
Specially look at section "(2) Describe your changes well." So the headline could be shorter and then in the body of the commit message you may want to be more descriptive
Also look at section "(5) Sign your work"
This is to make sure you're legally allowed to send in the patch, i.e. you're doing it on your own time or your employer allowed you to send code here to the mailing list.
I followed both (2) and (5), a new patch is generated and signed as follows. Hopefully this time it fits the criteria :). Thanks.
Quoted 1 line
From
a265cffc5f5bbfb3309a5ef2b425096523c94066Mon Sep 17 00:00:00 2001
From: "Luke Y.X. Lee" <[email protected]>
Date: Thu, 25 Sep 2014 10:56:46 +0800
Subject: [PATCH] Fix git-cvs bug that kills non-keyword source texts
* git-cvsexportcommit.perl: the wild matching on unexpanding keywords overkilled texts that are not CVS keywords. Limits the matching to CVS keywords only; also prevents OO syntax that accidentally matched.
--- git-cvsexportcommit.perl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
git-cvsexportcommit.perl +1 -1
@@ -309,7 +309,7 @@ foreach my $f (@files) { while (<FILTER_IN>) { my $line = $_; - $line =~ s/\$([A-Z][a-z]+):[^\$]+\$/\$$1\$/g; + $line =~ s/\$(Author|Date|Header|Id|Locker|Log|RCSfile|Revision|Source|State):[^:\$][^\$]*\$/\$$1\$/g; print FILTER_OUT $line; } close FILTER_IN;
Signature · 1 line
2.1.1.304.gb913e04