* [PATCH 02/11] import: extract_author_info becomes extract_commit_info
2019-06-09 2:51 6% [PATCH 00/11] v2: implement message editing Eric Wong (Contractor, The Linux Foundation)
@ 2019-06-09 2:51 7% ` Eric Wong (Contractor, The Linux Foundation)
0 siblings, 0 replies; 2+ results
From: Eric Wong (Contractor, The Linux Foundation) @ 2019-06-09 2:51 UTC (permalink / raw)
To: meta
We will be reusing the same logic for extracting all
the authorship and commit title logic for edits; so
put it all into one sub.
---
lib/PublicInbox/Import.pm | 32 +++++++++++++++-----------------
1 file changed, 15 insertions(+), 17 deletions(-)
diff --git a/lib/PublicInbox/Import.pm b/lib/PublicInbox/Import.pm
index 2c4bad9..6ee1935 100644
--- a/lib/PublicInbox/Import.pm
+++ b/lib/PublicInbox/Import.pm
@@ -277,7 +277,7 @@ sub git_timestamp {
"$ts $zone";
}
-sub extract_author_info ($) {
+sub extract_cmt_info ($) {
my ($mime) = @_;
my $sender = '';
@@ -314,7 +314,17 @@ sub extract_author_info ($) {
$name = '';
warn "no name in From: $from or Sender: $sender\n";
}
- ($name, $email);
+
+ my $hdr = $mime->header_obj;
+
+ my $subject = $hdr->header('Subject');
+ $subject = '(no subject)' unless defined $subject;
+ # Mime decoding can create nulls replace them with spaces to protect git
+ $subject =~ tr/\0/ /;
+ utf8::encode($subject);
+ my $at = git_timestamp(my @at = msg_datestamp($hdr));
+ my $ct = git_timestamp(my @ct = msg_timestamp($hdr));
+ ($name, $email, $at, $ct, $subject);
}
# kill potentially confusing/misleading headers
@@ -361,19 +371,7 @@ sub clean_tree_v2 ($$$) {
sub add {
my ($self, $mime, $check_cb) = @_; # mime = Email::MIME
- my ($name, $email) = extract_author_info($mime);
- my $hdr = $mime->header_obj;
- my @at = msg_datestamp($hdr);
- my @ct = msg_timestamp($hdr);
- my $author_time_raw = git_timestamp(@at);
- my $commit_time_raw = git_timestamp(@ct);
-
- my $subject = $mime->header('Subject');
- $subject = '(no subject)' unless defined $subject;
- # Mime decoding can create nulls replace them with spaces to protect git
- $subject =~ tr/\0/ /;
- utf8::encode($subject);
-
+ my ($name, $email, $at, $ct, $subject) = extract_cmt_info($mime);
my $path_type = $self->{path_type};
my $path;
if ($path_type eq '2/38') {
@@ -416,8 +414,8 @@ sub add {
}
print $w "commit $ref\nmark :$commit\n",
- "author $name <$email> $author_time_raw\n",
- "committer $self->{ident} $commit_time_raw\n" or wfail;
+ "author $name <$email> $at\n",
+ "committer $self->{ident} $ct\n" or wfail;
print $w "data ", (length($subject) + 1), "\n",
$subject, "\n\n" or wfail;
if ($tip ne '') {
--
EW
^ permalink raw reply related [relevance 7%]
* [PATCH 00/11] v2: implement message editing
@ 2019-06-09 2:51 6% Eric Wong (Contractor, The Linux Foundation)
2019-06-09 2:51 7% ` [PATCH 02/11] import: extract_author_info becomes extract_commit_info Eric Wong (Contractor, The Linux Foundation)
0 siblings, 1 reply; 2+ results
From: Eric Wong (Contractor, The Linux Foundation) @ 2019-06-09 2:51 UTC (permalink / raw)
To: meta
Some organizations are legally responsible for removing certain
content but prefer to edit out sensitive parts of a message
instead of purging it completely from history.
We can build off existing purge functionality. Instead of
replacing a message with an empty file; we instead replace
it with the desired content.
This ->replace method reindexes the modified message and
updates the corresponding git commit in case the subject
or authorship ident changes.
A new tool, public-inbox-edit(1) wraps the new ->replace
functionality by providing an editable mboxrd (suitable
for publicinbox.mailEditor "mutt -f").
GIT_EDITOR/VISUAL/EDITOR can be used if publicinbox.mailEditor
is not configured, but those are generally not ideal
for editing base64 or QP-encoded messages.
Eric Wong (Contractor, The Linux Foundation) (11):
v2writable: consolidate overview and indexing call
import: extract_author_info becomes extract_commit_info
import: switch to "replace_oids" interface for purge
v2writable: implement ->replace call
admin: remove warning arg for unconfigured inboxes
purge: start moving common options to AdminEdit module
admin: beef up resolve_inboxes to handle purge options
AdminEdit: move editability checks from -purge
admin: expose ->config
doc: document the --prune option for -index
edit: new tool to perform edits
Documentation/include.mk | 1 +
Documentation/public-inbox-config.pod | 4 +
Documentation/public-inbox-edit.pod | 109 ++++++++++++
Documentation/public-inbox-index.pod | 7 +
MANIFEST | 5 +
lib/PublicInbox/Admin.pm | 75 ++++++---
lib/PublicInbox/AdminEdit.pm | 50 ++++++
lib/PublicInbox/Import.pm | 101 ++++++-----
lib/PublicInbox/V2Writable.pm | 200 +++++++++++++++++-----
script/public-inbox-edit | 233 ++++++++++++++++++++++++++
script/public-inbox-purge | 103 ++----------
t/edit.t | 178 ++++++++++++++++++++
t/replace.t | 199 ++++++++++++++++++++++
13 files changed, 1065 insertions(+), 200 deletions(-)
create mode 100644 Documentation/public-inbox-edit.pod
create mode 100644 lib/PublicInbox/AdminEdit.pm
create mode 100755 script/public-inbox-edit
create mode 100644 t/edit.t
create mode 100644 t/replace.t
--
EW
^ permalink raw reply [relevance 6%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2019-06-09 2:51 6% [PATCH 00/11] v2: implement message editing Eric Wong (Contractor, The Linux Foundation)
2019-06-09 2:51 7% ` [PATCH 02/11] import: extract_author_info becomes extract_commit_info Eric Wong (Contractor, The Linux Foundation)
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).