From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS7922 96.112.0.0/13 X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00,URIBL_BLOCKED shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: meta@public-inbox.org Received: from resqmta-po-12v.sys.comcast.net (resqmta-po-12v.sys.comcast.net [96.114.154.171]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 5C6161F8B3 for ; Sat, 18 Oct 2014 20:19:56 +0000 (UTC) Received: from resomta-po-11v.sys.comcast.net ([96.114.154.235]) by resqmta-po-12v.sys.comcast.net with comcast id 4kKv1p00854zqzk01kKvxu; Sat, 18 Oct 2014 20:19:55 +0000 Received: from odin.tremily.us ([24.18.63.50]) by resomta-po-11v.sys.comcast.net with comcast id 4kKu1p00G152l3L01kKvd9; Sat, 18 Oct 2014 20:19:55 +0000 Received: by odin.tremily.us (Postfix, from userid 1000) id 9288014239AA; Sat, 18 Oct 2014 13:19:54 -0700 (PDT) From: "W. Trevor King" To: meta@public-inbox.org Cc: "W. Trevor King" Subject: [RFC] ssoma-mda: Use the email subject as the commit message Date: Sat, 18 Oct 2014 13:19:52 -0700 Message-Id: X-Mailer: git-send-email 2.0.4 List-Id: This is more interesting than just using 'mda' all the time, but it's harder to setup proper quoting around the message without using third-party Perl modules (e.g. IPC::Run or String::ShellQuote). This proof-of-concept patch just assumes the subject doesn't contain single-quotes ('). This patch also doesn't handle the empty/missing subject case, which should probably fall back to '' or some such. I'm fine dropping support for older Gits here, and just using the -m option to commit-tree. That landed with 96b8d93a (commit-tree: teach -m/-F options to read logs from elsewhere, 2011-11-09) in Git v1.7.9, which was released over 2.5 years ago on 2012-01-27. It would also be useful (I think) to set the GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, and GIT_AUTHOR_DATE environment variables from the message header before committing. I know how to do that using Python's subprocess module, but I don't know the Perl incantation. --- Is there any interest in a Python port of ssoma? The subprocess handling in Perl's standard libraries is not my favorite ;). I expect we could handle all of ssoma without leaving Python's standard libraries. For an example of a related Perl -> Python rewrite that I just landed, see nmbug [1,2,3]. Cheers, Trevor [1]: http://notmuchmail.org/nmbug/ [2]: http://thread.gmane.org/gmane.mail.notmuch.general/19189 id:cover.1412359989.git.wking@tremily.us [3]: http://article.gmane.org/gmane.mail.notmuch.general/19272 id:2a9f3e7423fe3ab95c2c6fbd6047aed935b6463b.1412703127.git.wking@tremily.us lib/Ssoma/Git.pm | 5 ++--- lib/Ssoma/MDA.pm | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/Ssoma/Git.pm b/lib/Ssoma/Git.pm index 2211893..e8d4cf6 100644 --- a/lib/Ssoma/Git.pm +++ b/lib/Ssoma/Git.pm @@ -266,10 +266,9 @@ sub commit_index { my @cmd = qw/git commit-tree/; push @cmd, $tree; push @cmd, '-p', $parent if $parent; + push @cmd, '-m', "'$message'"; - # git commit-tree -m didn't work in older git versions - $message =~ /\A\w+\z/ or die "message must be \\w+ only\n"; - my $commit = $self->qx_sha1("echo $message |". join(' ', @cmd)); + my $commit = $self->qx_sha1(join(' ', @cmd)); # update the ref @cmd = (qw/git update-ref/, $ref, $commit); diff --git a/lib/Ssoma/MDA.pm b/lib/Ssoma/MDA.pm index 02816a5..6b58b43 100644 --- a/lib/Ssoma/MDA.pm +++ b/lib/Ssoma/MDA.pm @@ -102,7 +102,8 @@ sub append { my $id = $git->simple_to_blob($simple); $gii->update('100644', $id, $path); } - $git->commit_index($gii, 0, $ref, "mda"); + my $subject = $simple->header("Subject"); + $git->commit_index($gii, 0, $ref, $subject); } # the main entry point takes an Email::Simple object -- 2.1.0.60.g85f0837