Skip to content

Commit

Permalink
mailinfo: Remove only one set of square brackets
Browse files Browse the repository at this point in the history
git-format-patch prepends patches with a [PATCH x/n] prefix, but
mailinfo used to remove any number of square-bracket pairs and
the content between them. This prevents one from using a commit
subject like this:

  [ and ] must be allowed as input

Removing the square bracket pair from this rather clumsily
constructed subject line loses important information, so we must
take care not to.

This patch causes the subject stripping to stop after it has
encountered one pair of square brackets.

One possible downside of this patch is that the patch-handling
programs will now fail at removing author-added square-brackets
to be removed, such as

  [RFC][PATCH x/n]

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.

Signed-off-by: Andreas Ericsson <ae@op5.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Andreas Ericsson authored and Junio C Hamano committed Jul 8, 2009
1 parent 1bed73c commit 650d30d
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
7 changes: 7 additions & 0 deletions builtin-mailinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,8 @@ static void cleanup_subject(struct strbuf *subject)
{
char *pos;
size_t remove;
int brackets_removed = 0;

while (subject->len) {
switch (*subject->buf) {
case 'r': case 'R':
Expand All @@ -236,10 +238,15 @@ static void cleanup_subject(struct strbuf *subject)
strbuf_remove(subject, 0, 1);
continue;
case '[':
/* remove only one set of square brackets */
if (brackets_removed)
break;

if ((pos = strchr(subject->buf, ']'))) {
remove = pos - subject->buf;
if (remove <= (subject->len - remove) * 2) {
strbuf_remove(subject, 0, remove + 1);
brackets_removed = 1;
continue;
}
} else
Expand Down
2 changes: 1 addition & 1 deletion t/t5100/info0012
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Author: Dmitriy Blinov
Email: bda@mnsspb.ru
Subject: Изменён список пакетов необходимых для сборки
Subject: [Navy-patches] Изменён список пакетов необходимых для сборки
Date: Wed, 12 Nov 2008 17:54:41 +0300

2 changes: 1 addition & 1 deletion t/t5100/sample.mbox
Original file line number Diff line number Diff line change
Expand Up @@ -514,7 +514,7 @@ MIME-Version: 1.0
Content-Type: text/plain;
charset=utf-8
Content-Transfer-Encoding: 8bit
Subject: [Navy-patches] [PATCH]
Subject: [PATCH] [Navy-patches]
=?utf-8?b?0JjQt9C80LXQvdGR0L0g0YHQv9C40YHQvtC6INC/0LA=?=
=?utf-8?b?0LrQtdGC0L7QsiDQvdC10L7QsdGF0L7QtNC40LzRi9GFINC00LvRjyA=?=
=?utf-8?b?0YHQsdC+0YDQutC4?=
Expand Down

0 comments on commit 650d30d

Please sign in to comment.