    
	
    
From nobody Mon Sep 17 00:00:00 2001
From: A (zzz)
      U
      Thor
      <a.u.thor@example.com> (Comment)
Date: Fri, 9 Jun 2006 00:44:16 -0700
Subject: [PATCH] a commit.

Here is a patch from A U Thor.

---
 foo | 2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/foo b/foo
index 9123cdc..918dcf8 100644
--- a/foo
+++ b/foo
@@ -1 +1 @@
-Fri Jun  9 00:44:04 PDT 2006
+Fri Jun  9 00:44:13 PDT 2006
-- 
1.4.0.g6f2b

From nobody Mon Sep 17 00:00:00 2001
From: A U Thor <a.u.thor@example.com>
Date: Fri, 9 Jun 2006 00:44:16 -0700
Subject: [PATCH] another patch

Here is a patch from A U Thor.  This addresses the issue raised in the
message:

From: Nit Picker <nit.picker@example.net>
Subject: foo is too old
Message-Id: <nitpicker.12121212@example.net>

Hopefully this would fix the problem stated there.


I have included an extra blank line above, but it does not have to be
stripped away here, along with the               		   
whitespaces at the end of the above line.  They are expected to be squashed
when the message is made into a commit log by stripspace,
Also, there are three blank lines after this paragraph,
two truly blank and another full of spaces in between.

            

Hope this helps.

---
 foo | 2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/foo b/foo
index 9123cdc..918dcf8 100644
--- a/foo
+++ b/foo
@@ -1 +1 @@
-Fri Jun  9 00:44:04 PDT 2006
+Fri Jun  9 00:44:13 PDT 2006
-- 
1.4.0.g6f2b

From nobody Mon Sep 17 00:00:00 2001
From: Junio C Hamano <junio@kernel.org>
Date: Fri, 9 Jun 2006 00:44:16 -0700
Subject: re: [PATCH] another patch

From: A U Thor <a.u.thor@example.com>
Subject: [PATCH] third patch

Here is a patch from A U Thor.  This addresses the issue raised in the
message:

From: Nit Picker <nit.picker@example.net>
Subject: foo is too old
Message-Id: <nitpicker.12121212@example.net>

Hopefully this would fix the problem stated there.

---
 foo | 2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/foo b/foo
index 9123cdc..918dcf8 100644
--- a/foo
+++ b/foo
@@ -1 +1 @@
-Fri Jun  9 00:44:04 PDT 2006
+Fri Jun  9 00:44:13 PDT 2006
-- 
1.4.0.g6f2b

From nobody Sat Aug 27 23:07:49 2005
Path: news.gmane.org!not-for-mail
Message-ID: <20050721.091036.01119516.yoshfuji@linux-ipv6.org>
From: YOSHIFUJI Hideaki / =?ISO-2022-JP?B?GyRCNUhGIzFRTEAbKEI=?= 
	<yoshfuji@linux-ipv6.org>
Newsgroups: gmane.comp.version-control.git
Subject: [PATCH 1/2] GIT: Try all addresses for given remote name
Date: Thu, 21 Jul 2005 09:10:36 -0400 (EDT)
Lines: 99
Organization: USAGI/WIDE Project
Approved: news@gmane.org
NNTP-Posting-Host: main.gmane.org
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Trace: sea.gmane.org 1121951434 29350 80.91.229.2 (21 Jul 2005 13:10:34 GMT)
X-Complaints-To: usenet@sea.gmane.org
NNTP-Posting-Date: Thu, 21 Jul 2005 13:10:34 +0000 (UTC)

Hello.

Try all addresses for given remote name until it succeeds.
Also supports IPv6.

Signed-of-by: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>

diff --git a/connect.c b/connect.c
--- a/connect.c
+++ b/connect.c
@@ -96,42 +96,57 @@ static enum protocol get_protocol(const 
 	die("I don't handle protocol '%s'", name);
 }
 
-static void lookup_host(const char *host, struct sockaddr *in)
-{
-	struct addrinfo *res;
-	int ret;
-
-	ret = getaddrinfo(host, NULL, NULL, &res);
-	if (ret)
-		die("Unable to look up %s (%s)", host, gai_strerror(ret));
-	*in = *res->ai_addr;
-	freeaddrinfo(res);
-}
+#define STR_(s)	# s
+#define STR(s)	STR_(s)
 
 static int git_tcp_connect(int fd[2], const char *prog, char *host, char *path)
 {
-	struct sockaddr addr;
-	int port = DEFAULT_GIT_PORT, sockfd;
-	char *colon;
-
-	colon = strchr(host, ':');
-	if (colon) {
-		char *end;
-		unsigned long n = strtoul(colon+1, &end, 0);
-		if (colon[1] && !*end) {
-			*colon = 0;
-			port = n;
+	int sockfd = -1;
+	char *colon, *end;
+	char *port = STR(DEFAULT_GIT_PORT);
+	struct addrinfo hints, *ai0, *ai;
+	int gai;
+
+	if (host[0] == '[') {
+		end = strchr(host + 1, ']');
+		if (end) {
+			*end = 0;
+			end++;
+			host++;
+		} else
+			end = host;
+	} else
+		end = host;
+	colon = strchr(end, ':');
+
+	if (colon)
+		port = colon + 1;
+
+	memset(&hints, 0, sizeof(hints));
+	hints.ai_socktype = SOCK_STREAM;
+	hints.ai_protocol = IPPROTO_TCP;
+
+	gai = getaddrinfo(host, port, &hints, &ai);
+	if (gai)
+		die("Unable to look up %s (%s)", host, gai_strerror(gai));
+
+	for (ai0 = ai; ai; ai = ai->ai_next) {
+		sockfd = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
+		if (sockfd < 0)
+			continue;
+		if (connect(sockfd, ai->ai_addr, ai->ai_addrlen) < 0) {
+			close(sockfd);
+			sockfd = -1;
+			continue;
 		}
+		break;
 	}
 
-	lookup_host(host, &addr);
-	((struct sockaddr_in *)&addr)->sin_port = htons(port);
+	freeaddrinfo(ai0);
 
-	sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
 	if (sockfd < 0)
 		die("unable to create socket (%s)", strerror(errno));
-	if (connect(sockfd, (void *)&addr, sizeof(addr)) < 0)
-		die("unable to connect (%s)", strerror(errno));
+
 	fd[0] = sockfd;
 	fd[1] = sockfd;
 	packet_write(sockfd, "%s %s\n", prog, path);

-- 
YOSHIFUJI Hideaki @ USAGI Project  <yoshfuji@linux-ipv6.org>
GPG-FP  : 9022 65EB 1ECF 3AD1 0BDF  80D8 4807 F894 E062 0EEA

From nobody Sat Aug 27 23:07:49 2005
Path: news.gmane.org!not-for-mail
Message-ID: <u5tacjjdpxq.fsf@lysator.liu.se>
From: =?ISO8859-1?Q?David_K=E5gedal?= <davidk@lysator.liu.se>
Newsgroups: gmane.comp.version-control.git
Subject: [PATCH] Fixed two bugs in git-cvsimport-script.
Date: Mon, 15 Aug 2005 20:18:25 +0200
Lines: 83
Approved: news@gmane.org
NNTP-Posting-Host: main.gmane.org
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO8859-1
Content-Transfer-Encoding: QUOTED-PRINTABLE
X-Trace: sea.gmane.org 1124130247 31839 80.91.229.2 (15 Aug 2005 18:24:07 GMT)
X-Complaints-To: usenet@sea.gmane.org
NNTP-Posting-Date: Mon, 15 Aug 2005 18:24:07 +0000 (UTC)
Cc: "Junio C. Hamano" <junkio@cox.net>
Original-X-From: git-owner@vger.kernel.org Mon Aug 15 20:24:05 2005

The git-cvsimport-script had a copule of small bugs that prevented me
from importing a big CVS repository.

The first was that it didn't handle removed files with a multi-digit
primary revision number.

The second was that it was asking the CVS server for "F" messages,
although they were not handled.

I also updated the documentation for that script to correspond to
actual flags.

Signed-off-by: David K=E5gedal <davidk@lysator.liu.se>
---

 Documentation/git-cvsimport-script.txt | 9 ++++++++-
 git-cvsimport-script                   | 4 ++--
 2 files changed, 10 insertions(+), 3 deletions(-)

50452f9c0c2df1f04d83a26266ba704b13861632
diff --git a/Documentation/git-cvsimport-script.txt b/Documentation/git=
-cvsimport-script.txt
--- a/Documentation/git-cvsimport-script.txt
+++ b/Documentation/git-cvsimport-script.txt
@@ -29,6 +29,10 @@ OPTIONS
 	currently, only the :local:, :ext: and :pserver: access methods=20
 	are supported.
=20
+-C <target-dir>::
+        The GIT repository to import to.  If the directory doesn't
+        exist, it will be created.  Default is the current directory.
+
 -i::
 	Import-only: don't perform a checkout after importing.  This option
 	ensures the working directory and cache remain untouched and will
@@ -44,7 +48,7 @@ OPTIONS
=20
 -p <options-for-cvsps>::
 	Additional options for cvsps.
-	The options '-x' and '-A' are implicit and should not be used here.
+	The options '-u' and '-A' are implicit and should not be used here.
=20
 	If you need to pass multiple options, separate them with a comma.
=20
@@ -57,6 +61,9 @@ OPTIONS
 -h::
 	Print a short usage message and exit.
=20
+-z <fuzz>::
+        Pass the timestamp fuzz factor to cvsps.
+
 OUTPUT
 ------
 If '-v' is specified, the script reports what it is doing.
diff --git a/git-cvsimport-script b/git-cvsimport-script
--- a/git-cvsimport-script
+++ b/git-cvsimport-script
@@ -190,7 +190,7 @@ sub conn {
 	$self->{'socketo'}->write("Root $repo\n");
=20
 	# Trial and error says that this probably is the minimum set
-	$self->{'socketo'}->write("Valid-responses ok error Valid-requests Mo=
de M Mbinary E F Checked-in Created Updated Merged Removed\n");
+	$self->{'socketo'}->write("Valid-responses ok error Valid-requests Mo=
de M Mbinary E Checked-in Created Updated Merged Removed\n");
=20
 	$self->{'socketo'}->write("valid-requests\n");
 	$self->{'socketo'}->flush();
@@ -691,7 +691,7 @@ while(<CVS>) {
 		unlink($tmpname);
 		my $mode =3D pmode($cvs->{'mode'});
 		push(@new,[$mode, $sha, $fn]); # may be resurrected!
-	} elsif($state =3D=3D 9 and /^\s+(\S+):\d(?:\.\d+)+->(\d(?:\.\d+)+)\(=
DEAD\)\s*$/) {
+	} elsif($state =3D=3D 9 and /^\s+(\S+):\d+(?:\.\d+)+->(\d+(?:\.\d+)+)=
\(DEAD\)\s*$/) {
 		my $fn =3D $1;
 		$fn =3D~ s#^/+##;
 		push(@old,$fn);

--=20
David K=E5gedal
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

From nobody Mon Sep 17 00:00:00 2001
From: A U Thor <a.u.thor@example.com>
References: <Pine.LNX.4.640.0001@woody.linux-foundation.org>
 <Pine.LNX.4.640.0002@woody.linux-foundation.org>
 <Pine.LNX.4.640.0003@woody.linux-foundation.org>
 <Pine.LNX.4.640.0004@woody.linux-foundation.org>
 <Pine.LNX.4.640.0005@woody.linux-foundation.org>
 <Pine.LNX.4.640.0006@woody.linux-foundation.org>
 <Pine.LNX.4.640.0007@woody.linux-foundation.org>
 <Pine.LNX.4.640.0008@woody.linux-foundation.org>
 <Pine.LNX.4.640.0009@woody.linux-foundation.org>
 <Pine.LNX.4.640.0010@woody.linux-foundation.org>
 <Pine.LNX.4.640.0011@woody.linux-foundation.org>
 <Pine.LNX.4.640.0012@woody.linux-foundation.org>
 <Pine.LNX.4.640.0013@woody.linux-foundation.org>
 <Pine.LNX.4.640.0014@woody.linux-foundation.org>
 <Pine.LNX.4.640.0015@woody.linux-foundation.org>
 <Pine.LNX.4.640.0016@woody.linux-foundation.org>
 <Pine.LNX.4.640.0017@woody.linux-foundation.org>
 <Pine.LNX.4.640.0018@woody.linux-foundation.org>
 <Pine.LNX.4.640.0019@woody.linux-foundation.org>
 <Pine.LNX.4.640.0020@woody.linux-foundation.org>
 <Pine.LNX.4.640.0021@woody.linux-foundation.org>
 <Pine.LNX.4.640.0022@woody.linux-foundation.org>
 <Pine.LNX.4.640.0023@woody.linux-foundation.org>
 <Pine.LNX.4.640.0024@woody.linux-foundation.org>
 <Pine.LNX.4.640.0025@woody.linux-foundation.org>
 <Pine.LNX.4.640.0026@woody.linux-foundation.org>
 <Pine.LNX.4.640.0027@woody.linux-foundation.org>
 <Pine.LNX.4.640.0028@woody.linux-foundation.org>
 <Pine.LNX.4.640.0029@woody.linux-foundation.org>
 <Pine.LNX.4.640.0030@woody.linux-foundation.org>
 <Pine.LNX.4.640.0031@woody.linux-foundation.org>
 <Pine.LNX.4.640.0032@woody.linux-foundation.org>
 <Pine.LNX.4.640.0033@woody.linux-foundation.org>
 <Pine.LNX.4.640.0034@woody.linux-foundation.org>
 <Pine.LNX.4.640.0035@woody.linux-foundation.org>
 <Pine.LNX.4.640.0036@woody.linux-foundation.org>
 <Pine.LNX.4.640.0037@woody.linux-foundation.org>
 <Pine.LNX.4.640.0038@woody.linux-foundation.org>
 <Pine.LNX.4.640.0039@woody.linux-foundation.org>
 <Pine.LNX.4.640.0040@woody.linux-foundation.org>
 <Pine.LNX.4.640.0041@woody.linux-foundation.org>
 <Pine.LNX.4.640.0042@woody.linux-foundation.org>
 <Pine.LNX.4.640.0043@woody.linux-foundation.org>
 <Pine.LNX.4.640.0044@woody.linux-foundation.org>
 <Pine.LNX.4.640.0045@woody.linux-foundation.org>
 <Pine.LNX.4.640.0046@woody.linux-foundation.org>
 <Pine.LNX.4.640.0047@woody.linux-foundation.org>
 <Pine.LNX.4.640.0048@woody.linux-foundation.org>
 <Pine.LNX.4.640.0049@woody.linux-foundation.org>
 <Pine.LNX.4.640.0050@woody.linux-foundation.org>
Date: Fri, 9 Jun 2006 00:44:16 -0700
Subject: [PATCH] a commit.

Here is a patch from A U Thor.

---
 foo | 2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/foo b/foo
index 9123cdc..918dcf8 100644
--- a/foo
+++ b/foo
@@ -1 +1 @@
-Fri Jun  9 00:44:04 PDT 2006
+Fri Jun  9 00:44:13 PDT 2006
-- 
1.4.0.g6f2b

From nobody Mon Sep 17 00:00:00 2001
From: A U Thor <a.u.thor@example.com>
Date: Fri, 9 Jun 2006 00:44:16 -0700
Subject: [PATCH] another patch

Here is an empty patch from A U Thor.

From nobody Mon Sep 17 00:00:00 2001
From: Junio C Hamano <junio@kernel.org>
Date: Fri, 9 Jun 2006 00:44:16 -0700
Subject: re: [PATCH] another patch

From: A U Thor <a.u.thor@example.com>
Subject: [PATCH] another patch
>Here is an empty patch from A U Thor.

Hey you forgot the patch!

From nobody Mon Sep 17 00:00:00 2001
From: A U Thor <a.u.thor@example.com>
Date: Mon, 17 Sep 2001 00:00:00 +0900
Mime-Version: 1.0
Content-Type: Text/Plain; charset=us-ascii
Content-Transfer-Encoding: Quoted-Printable

=0A=0AFrom: F U Bar <f.u.bar@example.com>
Subject: [PATCH] updates=0A=0AThis is to fix diff-format documentation.

diff --git a/Documentation/diff-format.txt b/Documentation/diff-format.txt
index b426a14..97756ec 100644
--- a/Documentation/diff-format.txt
+++ b/Documentation/diff-format.txt
@@ -81,7 +81,7 @@ The "diff" formatting options can be customized via the
 environment variable 'GIT_DIFF_OPTS'.  For example, if you
 prefer context diff:
=20
-      GIT_DIFF_OPTS=3D-c git-diff-index -p $(cat .git/HEAD)
+      GIT_DIFF_OPTS=3D-c git-diff-index -p HEAD
=20
=20
 2. When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
From b9704a518e21158433baa2cc2d591fea687967f6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Lukas=20Sandstr=C3=B6m?= <lukass@etek.chalmers.se>
Date: Thu, 10 Jul 2008 23:41:33 +0200
Subject: Re: discussion that lead to this patch
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

[PATCH] git-mailinfo: Fix getting the subject from the body

"Subject: " isn't in the static array "header", and thus
memcmp("Subject: ", header[i], 7) will never match.

Signed-off-by: Lukas Sandström <lukass@etek.chalmers.se>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 builtin-mailinfo.c | 2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
index 962aa34..2d1520f 100644
--- a/builtin-mailinfo.c
+++ b/builtin-mailinfo.c
@@ -334,7 +334,7 @@ static int check_header(char *line, unsigned linesize, char **hdr_data, int over
 		return 1;
 	if (!memcmp("[PATCH]", line, 7) && isspace(line[7])) {
 		for (i = 0; header[i]; i++) {
-			if (!memcmp("Subject: ", header[i], 9)) {
+			if (!memcmp("Subject", header[i], 7)) {
 				if (! handle_header(line, hdr_data[i], 0)) {
 					return 1;
 				}
-- 
1.5.6.2.455.g1efb2

From nobody Fri Aug  8 22:24:03 2008
Date: Fri, 8 Aug 2008 13:08:37 +0200 (CEST)
From: A U Thor <a.u.thor@example.com>
Subject: [PATCH 3/3 v2] Xyzzy
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="

--=-=-=
Content-Type: text/plain; charset=ISO8859-15
Content-Transfer-Encoding: quoted-printable

Here comes a commit log message, and
its second line is here.
---
 builtin-mailinfo.c  | 4 ++--

diff --git a/builtin-mailinfo.c b/builtin-mailinfo.c
index 3e5fe51..aabfe5c 100644
--- a/builtin-mailinfo.c
+++ b/builtin-mailinfo.c
@@ -758,8 +758,8 @@ static void handle_body(void)
 		/* process any boundary lines */
 		if (*content_top && is_multipart_boundary(&line)) {
 			/* flush any leftover */
-			if (line.len)
-				handle_filter(&line);
+			if (prev.len)
+				handle_filter(&prev);
=20
 			if (!handle_boundary())
 				goto handle_body_out;
--=20
1.6.0.rc2

--=-=-=--

From bda@mnsspb.ru Wed Nov 12 17:54:41 2008
From: Dmitriy Blinov <bda@mnsspb.ru>
To: navy-patches@dinar.mns.mnsspb.ru
Date: Wed, 12 Nov 2008 17:54:41 +0300
Message-Id: <1226501681-24923-1-git-send-email-bda@mnsspb.ru>
X-Mailer: git-send-email 1.5.6.5
MIME-Version: 1.0
Content-Type: text/plain;
  charset=utf-8
Content-Transfer-Encoding: 8bit
Subject: [Navy-patches] [PATCH]
	=?utf-8?b?0JjQt9C80LXQvdGR0L0g0YHQv9C40YHQvtC6INC/0LA=?=
	=?utf-8?b?0LrQtdGC0L7QsiDQvdC10L7QsdGF0L7QtNC40LzRi9GFINC00LvRjyA=?=
	=?utf-8?b?0YHQsdC+0YDQutC4?=

textlive-* исправлены на texlive-*
docutils заменён на python-docutils

Действительно, оказалось, что rest2web вытягивает за собой
python-docutils. В то время как сам rest2web не нужен.

Signed-off-by: Dmitriy Blinov <bda@mnsspb.ru>
---
 howto/build_navy.txt |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/howto/build_navy.txt b/howto/build_navy.txt
index 3fd3afb..0ee807e 100644
--- a/howto/build_navy.txt
+++ b/howto/build_navy.txt
@@ -119,8 +119,8 @@
    - libxv-dev
    - libusplash-dev
    - latex-make
-   - textlive-lang-cyrillic
-   - textlive-latex-extra
+   - texlive-lang-cyrillic
+   - texlive-latex-extra
    - dia
    - python-pyrex
    - libtool
@@ -128,7 +128,7 @@
    - sox
    - cython
    - imagemagick
-   - docutils
+   - python-docutils
 
 #. на машине dinar: добавить свой открытый ssh-ключ в authorized_keys2 пользователя ddev
 #. на своей машине: отредактировать /etc/sudoers (команда ``visudo``) примерно следующим образом::
-- 
1.5.6.5
From nobody Mon Sep 17 00:00:00 2001
From: <a.u.thor@example.com> (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 <junkio@cox.net>
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 <gitster@pobox.com>

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>
---
 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
From nobody Mon Sep 17 00:00:00 2001
From: A U Thor <a.u.thor@example.com>
Subject: check bogus body header (from)
Date: Fri, 9 Jun 2006 00:44:16 -0700

From: bogosity
  - a list
  - of stuff
---
diff --git a/foo b/foo
index e69de29..d95f3ad 100644
--- a/foo
+++ b/foo
@@ -0,0 +1 @@
+content

From nobody Mon Sep 17 00:00:00 2001
From: A U Thor <a.u.thor@example.com>
Subject: check bogus body header (date)
Date: Fri, 9 Jun 2006 00:44:16 -0700

Date: bogus

and some content

---
diff --git a/foo b/foo
index e69de29..d95f3ad 100644
--- a/foo
+++ b/foo
@@ -0,0 +1 @@
+content

From nobody Mon Sep 17 00:00:00 2001
From: A U Thor <a.u.thor@example.com>
Subject: A E I O U
Date: Mon, 17 Sep 2012 14:23:44 -0700
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-2022-jp"
Content-type: text/plain; charset="UTF-8"

New content here

diff --git a/foo b/foo
index e69de29..d95f3ad 100644
--- a/foo
+++ b/foo
@@ -0,0 +1 @@
+New content
From nobody Mon Sep 17 00:00:00 2001
From: A U Thor <a.u.thor@example.com>
Subject: check multiline inbody headers
Date: Fri, 9 Jun 2006 00:44:16 -0700

From: Another Thor
 <a.thor@example.com>
Subject: This one contains
	a tab
 and a space

a commit message

diff --git a/foo b/foo
index e69de29..d95f3ad 100644
--- a/foo
+++ b/foo
@@ -0,0 +1 @@
+content
