diff options
author | Eric Wong <e@80x24.org> | 2023-03-21 23:07:27 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2023-03-25 09:37:49 +0000 |
commit | 82eb71f8d43da1be6c6e021dfe487b7593770e57 (patch) | |
tree | 6587e38f64eaf47eabf52c0dfc3b738dc1dbccb8 | |
parent | d00087bcdf3a4c2411ecdf75b4f7ee583db530fb (diff) | |
download | public-inbox-82eb71f8d43da1be6c6e021dfe487b7593770e57.tar.gz |
This is to ensure we can exclude certain repos which are expensive-to-index (e.g. `**/deps.git', `**/transparency-logs/**').
-rw-r--r-- | lib/PublicInbox/CodeSearchIdx.pm | 10 | ||||
-rwxr-xr-x | script/public-inbox-cindex | 2 |
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/PublicInbox/CodeSearchIdx.pm b/lib/PublicInbox/CodeSearchIdx.pm index 587f0b81..97c563bd 100644 --- a/lib/PublicInbox/CodeSearchIdx.pm +++ b/lib/PublicInbox/CodeSearchIdx.pm @@ -27,7 +27,7 @@ use File::Spec (); use PublicInbox::SHA qw(sha256_hex); use PublicInbox::Search qw(xap_terms); use PublicInbox::SearchIdx qw(add_val); -use PublicInbox::Config; +use PublicInbox::Config qw(glob2re); use PublicInbox::Spawn qw(spawn popen_rd); use PublicInbox::OnDestroy; use Socket qw(MSG_EOR); @@ -566,6 +566,14 @@ sub cidx_run { # main entry point } warn "E: canonicalized and attempting to continue\n"; } + if (defined(my $excl = $self->{-opt}->{exclude})) { + my $re = '(?:'.join('\\z|', map { + glob2re($_) // qr/\A\Q$_\E/ + } @$excl).'\\z)'; + @{$self->{git_dirs}} = grep { + $_ =~ /$re/ ? (warn("# excluding $_\n"), 0) : 1; + } @{$self->{git_dirs}}; + } local $self->{nchange} = 0; local $LIVE_JOBS = $self->{-opt}->{jobs} || PublicInbox::IPC::detect_nproc() || 2; diff --git a/script/public-inbox-cindex b/script/public-inbox-cindex index 166c8261..420ef4de 100755 --- a/script/public-inbox-cindex +++ b/script/public-inbox-cindex @@ -26,7 +26,7 @@ EOF my $opt = { fsync => 1, scan => 1 }; # --no-scan is hidden GetOptions($opt, qw(quiet|q verbose|v+ reindex jobs|j=i fsync|sync! dangerous indexlevel|index-level|L=s batch_size|batch-size=s - project-list=s + project-list=s exclude=s@ d=s update|u scan! prune dry-run|n C=s@ help|h)) or die $help; if ($opt->{help}) { print $help; exit 0 }; |