user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
* [PATCH] v2writable: avoid spawning "git hash-object"
@ 2021-06-24  8:41 Eric Wong
  0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2021-06-24  8:41 UTC (permalink / raw)
  To: meta

We have git_sha() nowadays that's used everywhere, so avoid
process spawning overhead for "git hash-object".
---
 lib/PublicInbox/V2Writable.pm | 21 ++-------------------
 1 file changed, 2 insertions(+), 19 deletions(-)

diff --git a/lib/PublicInbox/V2Writable.pm b/lib/PublicInbox/V2Writable.pm
index 689d27c8..4c1accbb 100644
--- a/lib/PublicInbox/V2Writable.pm
+++ b/lib/PublicInbox/V2Writable.pm
@@ -13,7 +13,7 @@ use PublicInbox::Eml;
 use PublicInbox::Git;
 use PublicInbox::Import;
 use PublicInbox::MID qw(mids references);
-use PublicInbox::ContentHash qw(content_hash content_digest);
+use PublicInbox::ContentHash qw(content_hash content_digest git_sha);
 use PublicInbox::InboxWritable;
 use PublicInbox::OverIdx;
 use PublicInbox::Msgmap;
@@ -447,23 +447,6 @@ sub purge {
 	$rewritten->{rewrites}
 }
 
-# returns the git object_id of $fh, does not write the object to FS
-sub git_hash_raw ($$) {
-	my ($self, $raw) = @_;
-	# grab the expected OID we have to reindex:
-	pipe(my($in, $w)) or die "pipe: $!";
-	my $git_dir = $self->git->{git_dir};
-	my $cmd = ['git', "--git-dir=$git_dir", qw(hash-object --stdin)];
-	my $r = popen_rd($cmd, undef, { 0 => $in });
-	print $w $$raw or die "print \$w: $!";
-	close $w or die "close \$w: $!";
-	local $/ = "\n";
-	chomp(my $oid = <$r>);
-	close $r or die "git hash-object failed: $?";
-	$oid =~ /\A$OID\z/ or die "OID not expected: $oid";
-	$oid;
-}
-
 sub _check_mids_match ($$$) {
 	my ($old_list, $new_list, $hdrs) = @_;
 	my %old_mids = map { $_ => 1 } @$old_list;
@@ -498,7 +481,7 @@ sub replace ($$$) {
 	PublicInbox::Import::drop_unwanted_headers($new_mime);
 
 	my $raw = $new_mime->as_string;
-	my $expect_oid = git_hash_raw($self, \$raw);
+	my $expect_oid = git_sha(1, \$raw)->hexdigest;
 	my $rewritten = _replace($self, $old_mime, $new_mime, \$raw) or return;
 	my $need_reindex = $rewritten->{need_reindex};
 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-06-24  8:41 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-24  8:41 [PATCH] v2writable: avoid spawning "git hash-object" Eric Wong

user/dev discussion of public-inbox itself

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://public-inbox.org/meta
	git clone --mirror http://czquwvybam4bgbro.onion/meta
	git clone --mirror http://hjrcffqmbrq6wope.onion/meta
	git clone --mirror http://ou63pmih66umazou.onion/meta

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 meta meta/ https://public-inbox.org/meta \
		meta@public-inbox.org
	public-inbox-index meta

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.mail.public-inbox.meta
	nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.mail.public-inbox.meta
	nntp://ie5yzdi7fg72h7s4sdcztq5evakq23rdt33mfyfcddc5u3ndnw24ogqd.onion/inbox.comp.mail.public-inbox.meta
	nntp://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.mail.public-inbox.meta
	nntp://news.gmane.io/gmane.mail.public-inbox.general
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for project(s) associated with this inbox:

	https://80x24.org/public-inbox.git

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git