about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-03-19 08:14:58 +0000
committerEric Wong (Contractor, The Linux Foundation) <e@80x24.org>2018-03-19 08:16:34 +0000
commit21d3e01f609c8a6111dc5003638043d65ed721de (patch)
tree66afd6045f8ae4fd9e3147cd3a8293407d80c08f
parent41082521a8091b733eb61f8bb9f0e9f76ed4a4cb (diff)
downloadpublic-inbox-21d3e01f609c8a6111dc5003638043d65ed721de.tar.gz
This can help us track down some differences during import,
if needed.
-rw-r--r--lib/PublicInbox/V2Writable.pm24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index 8e1363ea..30ca9cec 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -406,6 +406,26 @@ sub import_init {
         $self->{im} = $im;
 }
 
+# XXX experimental
+sub diff ($$$) {
+        my ($mid, $cur, $new) = @_;
+        use File::Temp qw(tempfile);
+        use PublicInbox::Spawn qw(spawn);
+
+        my ($ah, $an) = tempfile('email-cur-XXXXXXXX');
+        print $ah $cur->as_string or die "print: $!";
+        close $ah or die "close: $!";
+        my ($bh, $bn) = tempfile('email-new-XXXXXXXX');
+        print $bh $new->as_string or die "print: $!";
+        close $bh or die "close: $!";
+        my $cmd = [ qw(diff -u), $an, $bn ];
+        print STDERR "# MID conflict <$mid>\n";
+        my $pid = spawn($cmd, undef, { 1 => 2 });
+        defined $pid or die "diff failed to spawn $!";
+        waitpid($pid, 0) == $pid or die "diff did not finish";
+        unlink($an, $bn);
+}
+
 sub lookup_content {
         my ($self, $mime, $mid) = @_;
         my $ibx = $self->{-inbox};
@@ -427,6 +447,10 @@ sub lookup_content {
                         $found = $smsg;
                         return 0; # break out of loop
                 }
+
+                # XXX DEBUG_DIFF is experimental and may be removed
+                diff($mid, $cur, $mime) if $ENV{DEBUG_DIFF};
+
                 1; # continue
         });
         $found;