87ab799234
I am working on a project that required parsing through regular mboxes that didn't necessarily have patches embedded in them. I started by creating my own modified copy of git-am and working from there. Very quickly, I noticed git-mailinfo wasn't able to handle a big chunk of my email. After hacking up numerous solutions and running into more limitations, I decided it was just easier to rewrite a big chunk of it. The following patch has a bunch of fixes and features that I needed in order for me do what I wanted. Note: I'm didn't follow any email rfc papers but I don't think any of the changes I did required much knowledge (besides the boundary stuff). List of major changes/fixes: - can't create empty patch files fix - empty patch files don't fail, this failure will come inside git-am - multipart boundaries are now handled - only output inbody headers if a patch exists otherwise assume those headers are part of the reply and instead output the original headers - decode and filter base64 patches correctly - various other accidental fixes I believe I didn't break any existing functionality or compatibility (other than what I describe above, which is really only the empty patch file). I tested this through various mailing list archives and everything seemed to parse correctly (a couple thousand emails). [jc: squashed in another patch from Don's five patch series to fix the test case, as this patch exposes the bug in the test.] Signed-off-by: Don Zickus <dzickus@redhat.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
70 lines
2.4 KiB
Plaintext
70 lines
2.4 KiB
Plaintext
---
|
|
|
|
Documentation/git-cvsimport-script.txt | 9 ++++++++-
|
|
git-cvsimport-script | 4 ++--
|
|
2 files changed, 10 insertions(+), 3 deletions(-)
|
|
|
|
50452f9c0c2df1f04d83a26266ba704b13861632
|
|
diff --git a/Documentation/git-cvsimport-script.txt b/Documentation/git-cvsimport-script.txt
|
|
--- a/Documentation/git-cvsimport-script.txt
|
|
+++ b/Documentation/git-cvsimport-script.txt
|
|
@@ -29,6 +29,10 @@ OPTIONS
|
|
currently, only the :local:, :ext: and :pserver: access methods
|
|
are supported.
|
|
|
|
+-C <target-dir>::
|
|
+ The GIT repository to import to. If the directory doesn't
|
|
+ exist, it will be created. Default is the current directory.
|
|
+
|
|
-i::
|
|
Import-only: don't perform a checkout after importing. This option
|
|
ensures the working directory and cache remain untouched and will
|
|
@@ -44,7 +48,7 @@ OPTIONS
|
|
|
|
-p <options-for-cvsps>::
|
|
Additional options for cvsps.
|
|
- The options '-x' and '-A' are implicit and should not be used here.
|
|
+ The options '-u' and '-A' are implicit and should not be used here.
|
|
|
|
If you need to pass multiple options, separate them with a comma.
|
|
|
|
@@ -57,6 +61,9 @@ OPTIONS
|
|
-h::
|
|
Print a short usage message and exit.
|
|
|
|
+-z <fuzz>::
|
|
+ Pass the timestamp fuzz factor to cvsps.
|
|
+
|
|
OUTPUT
|
|
------
|
|
If '-v' is specified, the script reports what it is doing.
|
|
diff --git a/git-cvsimport-script b/git-cvsimport-script
|
|
--- a/git-cvsimport-script
|
|
+++ b/git-cvsimport-script
|
|
@@ -190,7 +190,7 @@ sub conn {
|
|
$self->{'socketo'}->write("Root $repo\n");
|
|
|
|
# Trial and error says that this probably is the minimum set
|
|
- $self->{'socketo'}->write("Valid-responses ok error Valid-requests Mode M Mbinary E F Checked-in Created Updated Merged Removed\n");
|
|
+ $self->{'socketo'}->write("Valid-responses ok error Valid-requests Mode M Mbinary E Checked-in Created Updated Merged Removed\n");
|
|
|
|
$self->{'socketo'}->write("valid-requests\n");
|
|
$self->{'socketo'}->flush();
|
|
@@ -691,7 +691,7 @@ while(<CVS>) {
|
|
unlink($tmpname);
|
|
my $mode = pmode($cvs->{'mode'});
|
|
push(@new,[$mode, $sha, $fn]); # may be resurrected!
|
|
- } elsif($state == 9 and /^\s+(\S+):\d(?:\.\d+)+->(\d(?:\.\d+)+)\(DEAD\)\s*$/) {
|
|
+ } elsif($state == 9 and /^\s+(\S+):\d+(?:\.\d+)+->(\d+(?:\.\d+)+)\(DEAD\)\s*$/) {
|
|
my $fn = $1;
|
|
$fn =~ s#^/+##;
|
|
push(@old,$fn);
|
|
|
|
--
|
|
David Kågedal
|
|
-
|
|
To unsubscribe from this list: send the line "unsubscribe git" in
|
|
the body of a message to majordomo@vger.kernel.org
|
|
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
|
|