* "mailinfo: Remove only one set of square brackets" considered harmful
@ 2009-07-15 15:30 Linus Torvalds
2009-07-15 22:09 ` Junio C Hamano
0 siblings, 1 reply; 4+ messages in thread
From: Linus Torvalds @ 2009-07-15 15:30 UTC (permalink / raw)
To: Andreas Ericsson, Junio C Hamano, Git Mailing List
So I see why Andreas did it, and I don't disagree violently, BUT...
The fact is, we have mailing lists etc that add their own headers to the
subject, and they know they can add things in brackets. The most obvious
example is the Linux kernel security list, which adds a prefix of
"[Security] "
to the subject line in order to stand out (I'm on other lists that do
this too, but those generally don'thave patches).
So I have emails witgh subjects like
Subject: [Security] [patch] random: make get_random_int() more random
but I also have people who do the same thing themselves, eg:
Subject: [PATCH -rc] [BUGFIX] x86: fix kernel_trap_sp()
Subject: [BUGFIX][PATCH] fix bad page removal from LRU (Was Re: [RFC][PATCH] ..
so people did kind of depend on the "remove square brackets" behavior.
Sure, I end up editing the subject lines (and in that last example I would
have had to anyway), but I'm not so sure this was a good change.
The commit log says:
However, since format-patch only adds one set of square brackets,
this behaviour is quite easily undesrstood and defended while the
previous behaviour is not.
but sadly, Andreas totally missed the fact that we're not talking about
just format-patch, and that the whole bracket removal is about emails
in general.
So I'd suggest at least a setting to reinstate the previous behavior.
Linus
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: "mailinfo: Remove only one set of square brackets" considered harmful
2009-07-15 15:30 "mailinfo: Remove only one set of square brackets" considered harmful Linus Torvalds
@ 2009-07-15 22:09 ` Junio C Hamano
2009-07-15 22:31 ` Junio C Hamano
2009-07-15 22:31 ` Linus Torvalds
0 siblings, 2 replies; 4+ messages in thread
From: Junio C Hamano @ 2009-07-15 22:09 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Andreas Ericsson, Git Mailing List
Linus Torvalds <torvalds@linux-foundation.org> writes:
> So I see why Andreas did it, and I don't disagree violently, BUT...
>
> The fact is, we have mailing lists etc that add their own headers to the
> subject, and they know they can add things in brackets. The most obvious
> example is the Linux kernel security list, which adds a prefix of
>
> "[Security] "
>
> to the subject line in order to stand out (I'm on other lists that do
> this too, but those generally don'thave patches).
>>
> So I have emails witgh subjects like
>
> Subject: [Security] [patch] random: make get_random_int() more random
>
> but I also have people who do the same thing themselves, eg:
>
> Subject: [PATCH -rc] [BUGFIX] x86: fix kernel_trap_sp()
> Subject: [BUGFIX][PATCH] fix bad page removal from LRU (Was Re: [RFC][PATCH] ..
>
> so people did kind of depend on the "remove square brackets" behavior.
Thanks. The reason why I have merged some questionable stuff (including
this one) early in this cycle was exactly because we would want to catch
real world breakages caused by such changes.
Even though it is silly not to rely on already well established
conventions such as X-Mailing-List and List-ID but instead to waste
precious real estate at the initial part of the Subject in this century
merely for list identification purposes, this change regresses the end
result.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: "mailinfo: Remove only one set of square brackets" considered harmful
2009-07-15 22:09 ` Junio C Hamano
@ 2009-07-15 22:31 ` Junio C Hamano
2009-07-15 22:31 ` Linus Torvalds
1 sibling, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2009-07-15 22:31 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Andreas Ericsson, Git Mailing List
Junio C Hamano <gitster@pobox.com> writes:
> Linus Torvalds <torvalds@linux-foundation.org> writes:
>
>> So I see why Andreas did it, and I don't disagree violently, BUT...
>>
>> The fact is, we have mailing lists etc that add their own headers to the
>> subject, and they know they can add things in brackets. The most obvious
>> example is the Linux kernel security list, which adds a prefix of
>>
>> "[Security] "
>>
>> to the subject line in order to stand out (I'm on other lists that do
>> this too, but those generally don'thave patches).
>>>
>> So I have emails witgh subjects like
>>
>> Subject: [Security] [patch] random: make get_random_int() more random
>>
>> but I also have people who do the same thing themselves, eg:
>>
>> Subject: [PATCH -rc] [BUGFIX] x86: fix kernel_trap_sp()
>> Subject: [BUGFIX][PATCH] fix bad page removal from LRU (Was Re: [RFC][PATCH] ..
>>
>> so people did kind of depend on the "remove square brackets" behavior.
>
> Thanks. The reason why I have merged some questionable stuff (including
> this one) early in this cycle was exactly because we would want to catch
> real world breakages caused by such changes.
>
> Even though it is silly not to rely on already well established
> conventions such as X-Mailing-List and List-ID but instead to waste
> precious real estate at the initial part of the Subject in this century
> merely for list identification purposes, this change regresses the end
> result.
I've reverted Andreas's patch for now, but it may not be a bad idea to
resurrect it like this with an option.
Documentation/git-mailinfo.txt | 7 +++++-
builtin-mailinfo.c | 49 +++++++++++++++++++++++----------------
2 files changed, 35 insertions(+), 21 deletions(-)
diff --git a/Documentation/git-mailinfo.txt b/Documentation/git-mailinfo.txt
index 8d95aaa..d800aea 100644
--- a/Documentation/git-mailinfo.txt
+++ b/Documentation/git-mailinfo.txt
@@ -8,7 +8,7 @@ git-mailinfo - Extracts patch and authorship from a single e-mail message
SYNOPSIS
--------
-'git mailinfo' [-k] [-u | --encoding=<encoding> | -n] <msg> <patch>
+'git mailinfo' [-k|-b] [-u | --encoding=<encoding> | -n] <msg> <patch>
DESCRIPTION
@@ -32,6 +32,11 @@ OPTIONS
munging, and is most useful when used to read back
'git-format-patch -k' output.
+-b::
+ When -k is not in effect, all leading strings bracketed with '['
+ and ']' pairs are stripped. This option limits the stripping to
+ only the pairs whose bracketed string contains the word "PATCH".
+
-u::
The commit log message, author name and author email are
taken from the e-mail, and after minimally decoding MIME
diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
index 92637ac..a5949e2 100644
--- a/builtin-mailinfo.c
+++ b/builtin-mailinfo.c
@@ -10,6 +10,7 @@
static FILE *cmitmsg, *patchfile, *fin, *fout;
static int keep_subject;
+static int keep_non_patch_brackets_in_subject;
static const char *metainfo_charset;
static struct strbuf line = STRBUF_INIT;
static struct strbuf name = STRBUF_INIT;
@@ -219,35 +220,41 @@ static int is_multipart_boundary(const struct strbuf *line)
static void cleanup_subject(struct strbuf *subject)
{
- char *pos;
- size_t remove;
- while (subject->len) {
- switch (*subject->buf) {
+ size_t at = 0;
+
+ while (at < subject->len) {
+ char *pos;
+ size_t remove;
+
+ switch (subject->buf[at]) {
case 'r': case 'R':
- if (subject->len <= 3)
+ if (subject->len <= at + 3)
break;
- if (!memcmp(subject->buf + 1, "e:", 2)) {
- strbuf_remove(subject, 0, 3);
+ if (!memcmp(subject->buf + at + 1, "e:", 2)) {
+ strbuf_remove(subject, at, 3);
continue;
}
+ at++;
break;
case ' ': case '\t': case ':':
- strbuf_remove(subject, 0, 1);
+ strbuf_remove(subject, at, 1);
continue;
case '[':
- if ((pos = strchr(subject->buf, ']'))) {
- remove = pos - subject->buf;
- if (remove <= (subject->len - remove) * 2) {
- strbuf_remove(subject, 0, remove + 1);
- continue;
- }
- } else
- strbuf_remove(subject, 0, 1);
- break;
+ pos = strchr(subject->buf + at, ']');
+ if (!pos)
+ break;
+ remove = pos - subject->buf + at + 1;
+ if (!keep_non_patch_brackets_in_subject ||
+ (7 <= remove &&
+ memmem(subject->buf + at, remove, "PATCH", 5)))
+ strbuf_remove(subject, at, remove);
+ else
+ at += remove;
+ continue;
}
- strbuf_trim(subject);
- return;
+ break;
}
+ strbuf_trim(subject);
}
static void cleanup_space(struct strbuf *sb)
@@ -931,7 +938,7 @@ static int mailinfo(FILE *in, FILE *out, int ks, const char *encoding,
}
static const char mailinfo_usage[] =
- "git mailinfo [-k] [-u | --encoding=<encoding> | -n] msg patch <mail >info";
+ "git mailinfo [-k|-b] [-u | --encoding=<encoding> | -n] msg patch <mail >info";
int cmd_mailinfo(int argc, const char **argv, const char *prefix)
{
@@ -948,6 +955,8 @@ int cmd_mailinfo(int argc, const char **argv, const char *prefix)
while (1 < argc && argv[1][0] == '-') {
if (!strcmp(argv[1], "-k"))
keep_subject = 1;
+ else if (!strcmp(argv[1], "-b"))
+ keep_non_patch_brackets_in_subject = 1;
else if (!strcmp(argv[1], "-u"))
metainfo_charset = def_charset;
else if (!strcmp(argv[1], "-n"))
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: "mailinfo: Remove only one set of square brackets" considered harmful
2009-07-15 22:09 ` Junio C Hamano
2009-07-15 22:31 ` Junio C Hamano
@ 2009-07-15 22:31 ` Linus Torvalds
1 sibling, 0 replies; 4+ messages in thread
From: Linus Torvalds @ 2009-07-15 22:31 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Andreas Ericsson, Git Mailing List
On Wed, 15 Jul 2009, Junio C Hamano wrote:
>
> Even though it is silly not to rely on already well established
> conventions such as X-Mailing-List and List-ID but instead to waste
> precious real estate at the initial part of the Subject in this century
> merely for list identification purposes, this change regresses the end
> result.
Note that at least for the security list, it's not about "list
identification", but simply to make the thing stand out in peoples
mailboxes.
But I do agree that it's not perfect, and I would like to make the bracket
removal stricter. Andreas' patch was a step in that direction. But
different users would probably have different requirements.
For example, from a strictly git tools perspective, it's not even "any
square bracket", and some people might want to remove only a single
bracketed level, and only if it starts with "[PATCH".
For other uses, we want to remove the "Re: " at the beginning (and some
crazy email readers use language/locale-specific versions like "Vs:" for
that), and examples like the above "[Security]" from the security list.
So maybe the right solution is to allow people to configure this somehow.
Linus
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-07-15 22:32 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-15 15:30 "mailinfo: Remove only one set of square brackets" considered harmful Linus Torvalds
2009-07-15 22:09 ` Junio C Hamano
2009-07-15 22:31 ` Junio C Hamano
2009-07-15 22:31 ` Linus Torvalds
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox