summaryrefslogtreecommitdiff
path: root/t/t5100
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-08-27 04:36:05 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-08-27 05:22:22 (GMT)
commit017678b4f47dc1b2a6691631373c46daf8f63206 (patch)
treecf2a657570db595a71a35f7820a80eb2ded84309 /t/t5100
parentf43c97f5720f48598e59629f7dc9892d082d8b0e (diff)
downloadgit-017678b4f47dc1b2a6691631373c46daf8f63206.zip
git-017678b4f47dc1b2a6691631373c46daf8f63206.tar.gz
git-017678b4f47dc1b2a6691631373c46daf8f63206.tar.bz2
am/mailinfo: Disable scissors processing by default
You can enable it by giving --scissors to "git am". Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t5100')
-rw-r--r--t/t5100/info00146
-rw-r--r--t/t5100/info0014--scissors5
-rw-r--r--t/t5100/msg001414
-rw-r--r--t/t5100/msg0014--scissors4
-rw-r--r--t/t5100/patch0014--scissors64
5 files changed, 90 insertions, 3 deletions
diff --git a/t/t5100/info0014 b/t/t5100/info0014
index ab9c8d0..08566b3 100644
--- a/t/t5100/info0014
+++ b/t/t5100/info0014
@@ -1,5 +1,5 @@
-Author: Junio C Hamano
-Email: gitster@pobox.com
-Subject: Teach mailinfo to ignore everything before -- >8 -- mark
+Author: Junio Hamano
+Email: junkio@cox.net
+Subject: BLAH ONE
Date: Thu, 20 Aug 2009 17:18:22 -0700
diff --git a/t/t5100/info0014--scissors b/t/t5100/info0014--scissors
new file mode 100644
index 0000000..ab9c8d0
--- /dev/null
+++ b/t/t5100/info0014--scissors
@@ -0,0 +1,5 @@
+Author: Junio C Hamano
+Email: gitster@pobox.com
+Subject: Teach mailinfo to ignore everything before -- >8 -- mark
+Date: Thu, 20 Aug 2009 17:18:22 -0700
+
diff --git a/t/t5100/msg0014 b/t/t5100/msg0014
index 259c6a4..62e5cd2 100644
--- a/t/t5100/msg0014
+++ b/t/t5100/msg0014
@@ -1,3 +1,17 @@
+In real life, we will see a discussion that inspired this patch
+discussing related and unrelated things around >8 scissors mark
+in this part of the message.
+
+Subject: [PATCH] BLAH TWO
+
+And then we will see the scissors.
+
+ This line is not a scissors mark -- >8 -- but talks about it.
+ - - >8 - - please remove everything above this line - - >8 - -
+
+Subject: [PATCH] Teach mailinfo to ignore everything before -- >8 -- mark
+From: Junio C Hamano <gitster@pobox.com>
+
This teaches mailinfo the scissors -- >8 -- mark; the command ignores
everything before it in the message body.
diff --git a/t/t5100/msg0014--scissors b/t/t5100/msg0014--scissors
new file mode 100644
index 0000000..259c6a4
--- /dev/null
+++ b/t/t5100/msg0014--scissors
@@ -0,0 +1,4 @@
+This teaches mailinfo the scissors -- >8 -- mark; the command ignores
+everything before it in the message body.
+
+Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff --git a/t/t5100/patch0014--scissors b/t/t5100/patch0014--scissors
new file mode 100644
index 0000000..124efd2
--- /dev/null
+++ b/t/t5100/patch0014--scissors
@@ -0,0 +1,64 @@
+---
+ builtin-mailinfo.c | 37 ++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 36 insertions(+), 1 deletions(-)
+
+diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
+index b0b5d8f..461c47e 100644
+--- a/builtin-mailinfo.c
++++ b/builtin-mailinfo.c
+@@ -712,6 +712,34 @@ static inline int patchbreak(const struct strbuf *line)
+ return 0;
+ }
+
++static int scissors(const struct strbuf *line)
++{
++ size_t i, len = line->len;
++ int scissors_dashes_seen = 0;
++ const char *buf = line->buf;
++
++ for (i = 0; i < len; i++) {
++ if (isspace(buf[i]))
++ continue;
++ if (buf[i] == '-') {
++ scissors_dashes_seen |= 02;
++ continue;
++ }
++ if (i + 1 < len && !memcmp(buf + i, ">8", 2)) {
++ scissors_dashes_seen |= 01;
++ i++;
++ continue;
++ }
++ if (i + 7 < len && !memcmp(buf + i, "cut here", 8)) {
++ i += 7;
++ continue;
++ }
++ /* everything else --- not scissors */
++ break;
++ }
++ return scissors_dashes_seen == 03;
++}
++
+ static int handle_commit_msg(struct strbuf *line)
+ {
+ static int still_looking = 1;
+@@ -723,10 +751,17 @@ static int handle_commit_msg(struct strbuf *line)
+ strbuf_ltrim(line);
+ if (!line->len)
+ return 0;
+- if ((still_looking = check_header(line, s_hdr_data, 0)) != 0)
++ still_looking = check_header(line, s_hdr_data, 0);
++ if (still_looking)
+ return 0;
+ }
+
++ if (scissors(line)) {
++ fseek(cmitmsg, 0L, SEEK_SET);
++ still_looking = 1;
++ return 0;
++ }
++
+ /* normalize the log message to UTF-8. */
+ if (metainfo_charset)
+ convert_to_utf8(line, charset.buf);
+--
+1.6.4.1