-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Teach mailinfo to ignore everything before -- >8 -- mark
This teaches mailinfo the scissors -- >8 -- mark; the command ignores everything before it in the message body. For lefties among us, we also support -- 8< -- ;-) Signed-off-by: Junio C Hamano <[email protected]>
- Loading branch information
Showing
6 changed files
with
233 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Author: Junio C Hamano | ||
Email: [email protected] | ||
Subject: Teach mailinfo to ignore everything before -- >8 -- mark | ||
Date: Thu, 20 Aug 2009 17:18:22 -0700 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 <[email protected]> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -561,3 +561,92 @@ From: <[email protected]> (A U Thor) | |
Date: Fri, 9 Jun 2006 00:44:16 -0700 | ||
Subject: [PATCH] a patch | ||
|
||
From nobody Mon Sep 17 00:00:00 2001 | ||
From: Junio Hamano <[email protected]> | ||
Date: Thu, 20 Aug 2009 17:18:22 -0700 | ||
Subject: Why doesn't git-am does not like >8 scissors mark? | ||
|
||
Subject: [PATCH] BLAH ONE | ||
|
||
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 <[email protected]> | ||
|
||
This teaches mailinfo the scissors -- >8 -- mark; the command ignores | ||
everything before it in the message body. | ||
|
||
Signed-off-by: Junio C Hamano <[email protected]> | ||
--- | ||
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 |