]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/SearchIdx.pm
searchidx: don't assume "a/" and "b/" as prefixes
[public-inbox.git] / lib / PublicInbox / SearchIdx.pm
index 4e951bbedc7449d899a683b8ce6f965f3d291e5e..3a066c39ea91e9baa93e7f5504e4499e6b5332d6 100644 (file)
@@ -54,7 +54,7 @@ sub new {
                -inbox => $ibx,
                git => $ibx->git,
                -altid => $altid,
-               version => $version,
+               ibx_ver => $version,
                indexlevel => $indexlevel,
        }, $class;
        $ibx->umask_prepare;
@@ -209,12 +209,8 @@ sub index_diff ($$$) {
                        index_diff_inc($self, $_, 'XDFCTX', $xnq);
                } elsif (/^-- $/) { # email signature begins
                        $in_diff = undef;
-               } elsif (m!^diff --git ("?a/.+) ("?b/.+)\z!) {
-                       my ($fa, $fb) = ($1, $2);
-                       my $fn = (split('/', git_unquote($fa), 2))[1];
-                       $seen{$fn}++ or index_diff_inc($self, $fn, 'XDFN', $xnq);
-                       $fn = (split('/', git_unquote($fb), 2))[1];
-                       $seen{$fn}++ or index_diff_inc($self, $fn, 'XDFN', $xnq);
+               } elsif (m!^diff --git "?[^/]+/.+ "?[^/]+/.+\z!) {
+                       # wait until "---" and "+++" to capture filenames
                        $in_diff = 1;
                # traditional diff:
                } elsif (m/^diff -(.+) (\S+) (\S+)$/) {
@@ -224,12 +220,12 @@ sub index_diff ($$$) {
                        next unless $opt =~ /[uU]/;
                        $in_diff = index_old_diff_fn($self, \%seen, $fa, $fb,
                                                        $xnq);
-               } elsif (m!^--- ("?a/.+)!) {
+               } elsif (m!^--- ("?[^/]+/.+)!) {
                        my $fn = $1;
                        $fn = (split('/', git_unquote($fn), 2))[1];
                        $seen{$fn}++ or index_diff_inc($self, $fn, 'XDFN', $xnq);
                        $in_diff = 1;
-               } elsif (m!^\+\+\+ ("?b/.+)!)  {
+               } elsif (m!^\+\+\+ ("?[^/]+/.+)!)  {
                        my $fn = $1;
                        $fn = (split('/', git_unquote($fn), 2))[1];
                        $seen{$fn}++ or index_diff_inc($self, $fn, 'XDFN', $xnq);
@@ -358,7 +354,7 @@ sub add_xapian ($$$$$$) {
 
 sub _msgmap_init ($) {
        my ($self) = @_;
-       die "BUG: _msgmap_init is only for v1\n" if $self->{version} != 1;
+       die "BUG: _msgmap_init is only for v1\n" if $self->{ibx_ver} != 1;
        $self->{mm} //= eval {
                require PublicInbox::Msgmap;
                PublicInbox::Msgmap->new($self->{inboxdir}, 1);