summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Ericsson <ae@op5.se>2009-06-29 11:55:51 +0200
committerJunio C Hamano <gitster@pobox.com>2009-07-08 11:22:51 -0700
commit650d30d8a120c8982309ccb9ef40432b4ea2eb74 (patch)
tree4c8f4a6e737d08324649cd049a1a0a5764ef9a3e
parent1bed73c64a354248d6b342e58df257e8233bcbd2 (diff)
downloadgit-650d30d8a120c8982309ccb9ef40432b4ea2eb74.tar.gz
mailinfo: Remove only one set of square brackets
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>
-rw-r--r--builtin-mailinfo.c7
-rw-r--r--t/t5100/info00122
-rw-r--r--t/t5100/sample.mbox2
3 files changed, 9 insertions, 2 deletions
diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
index 1eeeb4de6d..be42532d43 100644
--- a/builtin-mailinfo.c
+++ b/builtin-mailinfo.c
@@ -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':
@@ -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
diff --git a/t/t5100/info0012 b/t/t5100/info0012
index ac1216ff75..9cd1415d25 100644
--- a/t/t5100/info0012
+++ b/t/t5100/info0012
@@ -1,5 +1,5 @@
Author: Dmitriy Blinov
Email: bda@mnsspb.ru
-Subject: Изменён список пакетов необходимых для сборки
+Subject: [Navy-patches] Изменён список пакетов необходимых для сборки
Date: Wed, 12 Nov 2008 17:54:41 +0300
diff --git a/t/t5100/sample.mbox b/t/t5100/sample.mbox
index c5ad206b40..ba4d0c9baf 100644
--- a/t/t5100/sample.mbox
+++ b/t/t5100/sample.mbox
@@ -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?=