about summary refs log tree commit diff
path: root/third_party/git/t/t5100
diff options
context:
space:
mode:
authorVincent Ambo <Vincent Ambo>2020-01-11T23·36+0000
committerVincent Ambo <Vincent Ambo>2020-01-11T23·40+0000
commit7ef0d62730840ded097b524104cc0a0904591a63 (patch)
treea670f96103667aeca4789a95d94ca0dff550c4ce /third_party/git/t/t5100
parent6a2a3007077818e24a3d56fc492ada9206a10cf0 (diff)
parent1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5 (diff)
merge(third_party/git): Merge squashed git subtree at v2.23.0 r/373
Merge commit '1b593e1ea4d2af0f6444d9a7788d5d99abd6fde5' as 'third_party/git'
Diffstat (limited to 'third_party/git/t/t5100')
-rw-r--r--third_party/git/t/t5100/.gitattributes4
-rw-r--r--third_party/git/t/t5100/0001mboxrd4
-rw-r--r--third_party/git/t/t5100/0002mboxrd5
-rw-r--r--third_party/git/t/t5100/comment.expect5
-rw-r--r--third_party/git/t/t5100/comment.in9
-rw-r--r--third_party/git/t/t5100/embed-from.expect5
-rw-r--r--third_party/git/t/t5100/embed-from.in13
-rw-r--r--third_party/git/t/t5100/empty0
-rw-r--r--third_party/git/t/t5100/info-from.expect5
-rw-r--r--third_party/git/t/t5100/info-from.in8
-rw-r--r--third_party/git/t/t5100/info00015
-rw-r--r--third_party/git/t/t5100/info00025
-rw-r--r--third_party/git/t/t5100/info00035
-rw-r--r--third_party/git/t/t5100/info00045
-rw-r--r--third_party/git/t/t5100/info00055
-rw-r--r--third_party/git/t/t5100/info00065
-rw-r--r--third_party/git/t/t5100/info00075
-rw-r--r--third_party/git/t/t5100/info00085
-rw-r--r--third_party/git/t/t5100/info00095
-rw-r--r--third_party/git/t/t5100/info00105
-rw-r--r--third_party/git/t/t5100/info00115
-rw-r--r--third_party/git/t/t5100/info00125
-rw-r--r--third_party/git/t/t5100/info0012--message-id5
-rw-r--r--third_party/git/t/t5100/info00135
-rw-r--r--third_party/git/t/t5100/info00145
-rw-r--r--third_party/git/t/t5100/info0014--scissors5
-rw-r--r--third_party/git/t/t5100/info00155
-rw-r--r--third_party/git/t/t5100/info0015--no-inbody-headers5
-rw-r--r--third_party/git/t/t5100/info00165
-rw-r--r--third_party/git/t/t5100/info0016--no-inbody-headers5
-rw-r--r--third_party/git/t/t5100/info00175
-rw-r--r--third_party/git/t/t5100/info00185
-rw-r--r--third_party/git/t/t5100/info0018--no-inbody-headers5
-rw-r--r--third_party/git/t/t5100/msg00012
-rw-r--r--third_party/git/t/t5100/msg000221
-rw-r--r--third_party/git/t/t5100/msg00039
-rw-r--r--third_party/git/t/t5100/msg00047
-rw-r--r--third_party/git/t/t5100/msg000513
-rw-r--r--third_party/git/t/t5100/msg00062
-rw-r--r--third_party/git/t/t5100/msg00072
-rw-r--r--third_party/git/t/t5100/msg00084
-rw-r--r--third_party/git/t/t5100/msg00092
-rw-r--r--third_party/git/t/t5100/msg00105
-rw-r--r--third_party/git/t/t5100/msg00112
-rw-r--r--third_party/git/t/t5100/msg00127
-rw-r--r--third_party/git/t/t5100/msg0012--message-id8
-rw-r--r--third_party/git/t/t5100/msg00130
-rw-r--r--third_party/git/t/t5100/msg001418
-rw-r--r--third_party/git/t/t5100/msg0014--scissors4
-rw-r--r--third_party/git/t/t5100/msg00150
-rw-r--r--third_party/git/t/t5100/msg0015--no-inbody-headers3
-rw-r--r--third_party/git/t/t5100/msg00162
-rw-r--r--third_party/git/t/t5100/msg0016--no-inbody-headers4
-rw-r--r--third_party/git/t/t5100/msg00172
-rw-r--r--third_party/git/t/t5100/msg00182
-rw-r--r--third_party/git/t/t5100/msg0018--no-inbody-headers8
-rw-r--r--third_party/git/t/t5100/nul-b64.expectbin0 -> 1672 bytes
-rw-r--r--third_party/git/t/t5100/nul-b64.in37
-rw-r--r--third_party/git/t/t5100/nul-plainbin0 -> 91 bytes
-rw-r--r--third_party/git/t/t5100/patch000114
-rw-r--r--third_party/git/t/t5100/patch000214
-rw-r--r--third_party/git/t/t5100/patch000314
-rw-r--r--third_party/git/t/t5100/patch000493
-rw-r--r--third_party/git/t/t5100/patch000569
-rw-r--r--third_party/git/t/t5100/patch000614
-rw-r--r--third_party/git/t/t5100/patch00070
-rw-r--r--third_party/git/t/t5100/patch00080
-rw-r--r--third_party/git/t/t5100/patch000913
-rw-r--r--third_party/git/t/t5100/patch001020
-rw-r--r--third_party/git/t/t5100/patch001122
-rw-r--r--third_party/git/t/t5100/patch001230
-rw-r--r--third_party/git/t/t5100/patch0012--message-id30
-rw-r--r--third_party/git/t/t5100/patch00130
-rw-r--r--third_party/git/t/t5100/patch001464
-rw-r--r--third_party/git/t/t5100/patch0014--scissors64
-rw-r--r--third_party/git/t/t5100/patch00158
-rw-r--r--third_party/git/t/t5100/patch0015--no-inbody-headers8
-rw-r--r--third_party/git/t/t5100/patch00168
-rw-r--r--third_party/git/t/t5100/patch0016--no-inbody-headers8
-rw-r--r--third_party/git/t/t5100/patch00176
-rw-r--r--third_party/git/t/t5100/patch00186
-rw-r--r--third_party/git/t/t5100/patch0018--no-inbody-headers6
-rw-r--r--third_party/git/t/t5100/quoted-from.expect3
-rw-r--r--third_party/git/t/t5100/quoted-from.in10
-rw-r--r--third_party/git/t/t5100/quoted-string.expect5
-rw-r--r--third_party/git/t/t5100/quoted-string.in9
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00014
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00024
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00034
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00044
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00052
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00062
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00072
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00082
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00092
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00102
-rw-r--r--third_party/git/t/t5100/rfc2047-info-00112
-rw-r--r--third_party/git/t/t5100/rfc2047-samples.mbox48
-rw-r--r--third_party/git/t/t5100/sample.mbox720
-rw-r--r--third_party/git/t/t5100/sample.mboxrd19
100 files changed, 1692 insertions, 0 deletions
diff --git a/third_party/git/t/t5100/.gitattributes b/third_party/git/t/t5100/.gitattributes
new file mode 100644
index 000000000000..c93f5142fa7d
--- /dev/null
+++ b/third_party/git/t/t5100/.gitattributes
@@ -0,0 +1,4 @@
+msg*	encoding=UTF-8
+info*	encoding=UTF-8
+rfc2047-info-*	encoding=UTF-8
+sample.mbox	encoding=UTF-8
diff --git a/third_party/git/t/t5100/0001mboxrd b/third_party/git/t/t5100/0001mboxrd
new file mode 100644
index 000000000000..494ec554b97a
--- /dev/null
+++ b/third_party/git/t/t5100/0001mboxrd
@@ -0,0 +1,4 @@
+From the beginning, mbox should have been mboxrd
+>From escaped
+From not mangled but this line should have been escaped
+
diff --git a/third_party/git/t/t5100/0002mboxrd b/third_party/git/t/t5100/0002mboxrd
new file mode 100644
index 000000000000..71343d41f2ea
--- /dev/null
+++ b/third_party/git/t/t5100/0002mboxrd
@@ -0,0 +1,5 @@
+ >From unchanged
+ From also unchanged
+no trailing space, no escaping necessary and '>' was intended:
+>From
+
diff --git a/third_party/git/t/t5100/comment.expect b/third_party/git/t/t5100/comment.expect
new file mode 100644
index 000000000000..72281779843f
--- /dev/null
+++ b/third_party/git/t/t5100/comment.expect
@@ -0,0 +1,5 @@
+Author: A U Thor (this is (really) a comment (honestly))
+Email: somebody@example.com
+Subject: testing comments
+Date: Sun, 25 May 2008 00:38:18 -0700
+
diff --git a/third_party/git/t/t5100/comment.in b/third_party/git/t/t5100/comment.in
new file mode 100644
index 000000000000..c53a192dfeac
--- /dev/null
+++ b/third_party/git/t/t5100/comment.in
@@ -0,0 +1,9 @@
+From 1234567890123456789012345678901234567890 Mon Sep 17 00:00:00 2001
+From: "A U Thor" <somebody@example.com> (this is \(really\) a comment (honestly))
+Date: Sun, 25 May 2008 00:38:18 -0700
+Subject: [PATCH] testing comments
+
+
+
+---
+patch
diff --git a/third_party/git/t/t5100/embed-from.expect b/third_party/git/t/t5100/embed-from.expect
new file mode 100644
index 000000000000..06a3a3859a8a
--- /dev/null
+++ b/third_party/git/t/t5100/embed-from.expect
@@ -0,0 +1,5 @@
+Author: Commit Author
+Email: commit@example.com
+Subject: patch subject
+Date: Sat, 13 Sep 2014 21:13:23 -0400 
+
diff --git a/third_party/git/t/t5100/embed-from.in b/third_party/git/t/t5100/embed-from.in
new file mode 100644
index 000000000000..5f3f84e508ff
--- /dev/null
+++ b/third_party/git/t/t5100/embed-from.in
@@ -0,0 +1,13 @@
+From 1234567890123456789012345678901234567890 Mon Sep 17 00:00:00 2001
+From: Email Author <email@example.com>
+Date: Sun, 25 May 2008 00:38:18 -0700
+Subject: [PATCH] email subject
+
+>From 1234567890123456789012345678901234567890 Mon Sep 17 00:00:00 2001
+From: Commit Author <commit@example.com>
+Date: Sat, 13 Sep 2014 21:13:23 -0400
+Subject: patch subject
+
+patch body
+---
+patch
diff --git a/third_party/git/t/t5100/empty b/third_party/git/t/t5100/empty
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/third_party/git/t/t5100/empty
diff --git a/third_party/git/t/t5100/info-from.expect b/third_party/git/t/t5100/info-from.expect
new file mode 100644
index 000000000000..c31d2eb5504b
--- /dev/null
+++ b/third_party/git/t/t5100/info-from.expect
@@ -0,0 +1,5 @@
+Author: bare@example.com
+Email: bare@example.com
+Subject: testing bare address in from header
+Date: Sun, 25 May 2008 00:38:18 -0700
+
diff --git a/third_party/git/t/t5100/info-from.in b/third_party/git/t/t5100/info-from.in
new file mode 100644
index 000000000000..4f082093fc81
--- /dev/null
+++ b/third_party/git/t/t5100/info-from.in
@@ -0,0 +1,8 @@
+From 667d8940e719cddee1cfe237cbbe215e20270b09 Mon Sep 17 00:00:00 2001
+From: bare@example.com
+Date: Sun, 25 May 2008 00:38:18 -0700
+Subject: [PATCH] testing bare address in from header
+
+commit message
+---
+patch
diff --git a/third_party/git/t/t5100/info0001 b/third_party/git/t/t5100/info0001
new file mode 100644
index 000000000000..f951538acc01
--- /dev/null
+++ b/third_party/git/t/t5100/info0001
@@ -0,0 +1,5 @@
+Author: A (zzz) U Thor (Comment)
+Email: a.u.thor@example.com
+Subject: a commit.
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0002 b/third_party/git/t/t5100/info0002
new file mode 100644
index 000000000000..49bb0fec8532
--- /dev/null
+++ b/third_party/git/t/t5100/info0002
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: another patch
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0003 b/third_party/git/t/t5100/info0003
new file mode 100644
index 000000000000..bd0d1221aa34
--- /dev/null
+++ b/third_party/git/t/t5100/info0003
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: third patch
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0004 b/third_party/git/t/t5100/info0004
new file mode 100644
index 000000000000..616c3092a282
--- /dev/null
+++ b/third_party/git/t/t5100/info0004
@@ -0,0 +1,5 @@
+Author: YOSHIFUJI Hideaki / 吉藤英明
+Email: yoshfuji@linux-ipv6.org
+Subject: GIT: Try all addresses for given remote name
+Date: Thu, 21 Jul 2005 09:10:36 -0400 (EDT)
+
diff --git a/third_party/git/t/t5100/info0005 b/third_party/git/t/t5100/info0005
new file mode 100644
index 000000000000..46a46fc77283
--- /dev/null
+++ b/third_party/git/t/t5100/info0005
@@ -0,0 +1,5 @@
+Author: David Kågedal
+Email: davidk@lysator.liu.se
+Subject: Fixed two bugs in git-cvsimport-script.
+Date: Mon, 15 Aug 2005 20:18:25 +0200
+
diff --git a/third_party/git/t/t5100/info0006 b/third_party/git/t/t5100/info0006
new file mode 100644
index 000000000000..8c052777e0d2
--- /dev/null
+++ b/third_party/git/t/t5100/info0006
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: a commit.
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0007 b/third_party/git/t/t5100/info0007
new file mode 100644
index 000000000000..49bb0fec8532
--- /dev/null
+++ b/third_party/git/t/t5100/info0007
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: another patch
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0008 b/third_party/git/t/t5100/info0008
new file mode 100644
index 000000000000..e8a295138317
--- /dev/null
+++ b/third_party/git/t/t5100/info0008
@@ -0,0 +1,5 @@
+Author: Junio C Hamano
+Email: junio@kernel.org
+Subject: another patch
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0009 b/third_party/git/t/t5100/info0009
new file mode 100644
index 000000000000..2a66321c8032
--- /dev/null
+++ b/third_party/git/t/t5100/info0009
@@ -0,0 +1,5 @@
+Author: F U Bar
+Email: f.u.bar@example.com
+Subject: updates
+Date: Mon, 17 Sep 2001 00:00:00 +0900
+
diff --git a/third_party/git/t/t5100/info0010 b/third_party/git/t/t5100/info0010
new file mode 100644
index 000000000000..1791241e46dc
--- /dev/null
+++ b/third_party/git/t/t5100/info0010
@@ -0,0 +1,5 @@
+Author: Lukas Sandström
+Email: lukass@etek.chalmers.se
+Subject: git-mailinfo: Fix getting the subject from the body
+Date: Thu, 10 Jul 2008 23:41:33 +0200
+
diff --git a/third_party/git/t/t5100/info0011 b/third_party/git/t/t5100/info0011
new file mode 100644
index 000000000000..da5a605a12e5
--- /dev/null
+++ b/third_party/git/t/t5100/info0011
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: Xyzzy
+Date: Fri, 8 Aug 2008 13:08:37 +0200 (CEST)
+
diff --git a/third_party/git/t/t5100/info0012 b/third_party/git/t/t5100/info0012
new file mode 100644
index 000000000000..ac1216ff7570
--- /dev/null
+++ b/third_party/git/t/t5100/info0012
@@ -0,0 +1,5 @@
+Author: Dmitriy Blinov
+Email: bda@mnsspb.ru
+Subject: Изменён список пакетов необходимых для сборки
+Date: Wed, 12 Nov 2008 17:54:41 +0300
+
diff --git a/third_party/git/t/t5100/info0012--message-id b/third_party/git/t/t5100/info0012--message-id
new file mode 100644
index 000000000000..ac1216ff7570
--- /dev/null
+++ b/third_party/git/t/t5100/info0012--message-id
@@ -0,0 +1,5 @@
+Author: Dmitriy Blinov
+Email: bda@mnsspb.ru
+Subject: Изменён список пакетов необходимых для сборки
+Date: Wed, 12 Nov 2008 17:54:41 +0300
+
diff --git a/third_party/git/t/t5100/info0013 b/third_party/git/t/t5100/info0013
new file mode 100644
index 000000000000..bbe049e20eb0
--- /dev/null
+++ b/third_party/git/t/t5100/info0013
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: a patch
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0014 b/third_party/git/t/t5100/info0014
new file mode 100644
index 000000000000..08566b34b978
--- /dev/null
+++ b/third_party/git/t/t5100/info0014
@@ -0,0 +1,5 @@
+Author: Junio Hamano
+Email: junkio@cox.net
+Subject: BLAH ONE
+Date: Thu, 20 Aug 2009 17:18:22 -0700
+
diff --git a/third_party/git/t/t5100/info0014--scissors b/third_party/git/t/t5100/info0014--scissors
new file mode 100644
index 000000000000..ab9c8d090594
--- /dev/null
+++ b/third_party/git/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/third_party/git/t/t5100/info0015 b/third_party/git/t/t5100/info0015
new file mode 100644
index 000000000000..0114f106c5f6
--- /dev/null
+++ b/third_party/git/t/t5100/info0015
@@ -0,0 +1,5 @@
+Author: 
+Email: 
+Subject: check bogus body header (from)
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0015--no-inbody-headers b/third_party/git/t/t5100/info0015--no-inbody-headers
new file mode 100644
index 000000000000..c4d8d7720ee3
--- /dev/null
+++ b/third_party/git/t/t5100/info0015--no-inbody-headers
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: check bogus body header (from)
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0016 b/third_party/git/t/t5100/info0016
new file mode 100644
index 000000000000..38ccd0dcf2c9
--- /dev/null
+++ b/third_party/git/t/t5100/info0016
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: check bogus body header (date)
+Date: bogus 
+
diff --git a/third_party/git/t/t5100/info0016--no-inbody-headers b/third_party/git/t/t5100/info0016--no-inbody-headers
new file mode 100644
index 000000000000..f4857d45df30
--- /dev/null
+++ b/third_party/git/t/t5100/info0016--no-inbody-headers
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: check bogus body header (date)
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0017 b/third_party/git/t/t5100/info0017
new file mode 100644
index 000000000000..d2bc89ffe9ee
--- /dev/null
+++ b/third_party/git/t/t5100/info0017
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: A E I O U
+Date: Mon, 17 Sep 2012 14:23:44 -0700
+
diff --git a/third_party/git/t/t5100/info0018 b/third_party/git/t/t5100/info0018
new file mode 100644
index 000000000000..d53e7491c70c
--- /dev/null
+++ b/third_party/git/t/t5100/info0018
@@ -0,0 +1,5 @@
+Author: Another Thor
+Email: a.thor@example.com
+Subject: This one contains a tab and a space
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/info0018--no-inbody-headers b/third_party/git/t/t5100/info0018--no-inbody-headers
new file mode 100644
index 000000000000..30b17bd91349
--- /dev/null
+++ b/third_party/git/t/t5100/info0018--no-inbody-headers
@@ -0,0 +1,5 @@
+Author: A U Thor
+Email: a.u.thor@example.com
+Subject: check multiline inbody headers
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+
diff --git a/third_party/git/t/t5100/msg0001 b/third_party/git/t/t5100/msg0001
new file mode 100644
index 000000000000..b275a9a9b21c
--- /dev/null
+++ b/third_party/git/t/t5100/msg0001
@@ -0,0 +1,2 @@
+Here is a patch from A U Thor.
+
diff --git a/third_party/git/t/t5100/msg0002 b/third_party/git/t/t5100/msg0002
new file mode 100644
index 000000000000..e2546ec7332b
--- /dev/null
+++ b/third_party/git/t/t5100/msg0002
@@ -0,0 +1,21 @@
+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.
+
diff --git a/third_party/git/t/t5100/msg0003 b/third_party/git/t/t5100/msg0003
new file mode 100644
index 000000000000..1ac68101b135
--- /dev/null
+++ b/third_party/git/t/t5100/msg0003
@@ -0,0 +1,9 @@
+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.
+
diff --git a/third_party/git/t/t5100/msg0004 b/third_party/git/t/t5100/msg0004
new file mode 100644
index 000000000000..6f8ba3b8e0e5
--- /dev/null
+++ b/third_party/git/t/t5100/msg0004
@@ -0,0 +1,7 @@
+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/third_party/git/t/t5100/msg0005 b/third_party/git/t/t5100/msg0005
new file mode 100644
index 000000000000..dd94cd7b9f52
--- /dev/null
+++ b/third_party/git/t/t5100/msg0005
@@ -0,0 +1,13 @@
+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ågedal <davidk@lysator.liu.se>
diff --git a/third_party/git/t/t5100/msg0006 b/third_party/git/t/t5100/msg0006
new file mode 100644
index 000000000000..b275a9a9b21c
--- /dev/null
+++ b/third_party/git/t/t5100/msg0006
@@ -0,0 +1,2 @@
+Here is a patch from A U Thor.
+
diff --git a/third_party/git/t/t5100/msg0007 b/third_party/git/t/t5100/msg0007
new file mode 100644
index 000000000000..71b23c0236bd
--- /dev/null
+++ b/third_party/git/t/t5100/msg0007
@@ -0,0 +1,2 @@
+Here is an empty patch from A U Thor.
+
diff --git a/third_party/git/t/t5100/msg0008 b/third_party/git/t/t5100/msg0008
new file mode 100644
index 000000000000..a80ecb97ef9d
--- /dev/null
+++ b/third_party/git/t/t5100/msg0008
@@ -0,0 +1,4 @@
+>Here is an empty patch from A U Thor.
+
+Hey you forgot the patch!
+
diff --git a/third_party/git/t/t5100/msg0009 b/third_party/git/t/t5100/msg0009
new file mode 100644
index 000000000000..9ffe1314891f
--- /dev/null
+++ b/third_party/git/t/t5100/msg0009
@@ -0,0 +1,2 @@
+This is to fix diff-format documentation.
+
diff --git a/third_party/git/t/t5100/msg0010 b/third_party/git/t/t5100/msg0010
new file mode 100644
index 000000000000..a96c23009234
--- /dev/null
+++ b/third_party/git/t/t5100/msg0010
@@ -0,0 +1,5 @@
+"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>
diff --git a/third_party/git/t/t5100/msg0011 b/third_party/git/t/t5100/msg0011
new file mode 100644
index 000000000000..4667f210074b
--- /dev/null
+++ b/third_party/git/t/t5100/msg0011
@@ -0,0 +1,2 @@
+Here comes a commit log message, and
+its second line is here.
diff --git a/third_party/git/t/t5100/msg0012 b/third_party/git/t/t5100/msg0012
new file mode 100644
index 000000000000..1dc2bf7f7fa1
--- /dev/null
+++ b/third_party/git/t/t5100/msg0012
@@ -0,0 +1,7 @@
+textlive-* исправлены на texlive-*
+docutils заменён на python-docutils
+
+Действительно, оказалось, что rest2web вытягивает за собой
+python-docutils. В то время как сам rest2web не нужен.
+
+Signed-off-by: Dmitriy Blinov <bda@mnsspb.ru>
diff --git a/third_party/git/t/t5100/msg0012--message-id b/third_party/git/t/t5100/msg0012--message-id
new file mode 100644
index 000000000000..376e26e9aeba
--- /dev/null
+++ b/third_party/git/t/t5100/msg0012--message-id
@@ -0,0 +1,8 @@
+textlive-* исправлены на texlive-*
+docutils заменён на python-docutils
+
+Действительно, оказалось, что rest2web вытягивает за собой
+python-docutils. В то время как сам rest2web не нужен.
+
+Signed-off-by: Dmitriy Blinov <bda@mnsspb.ru>
+Message-Id: <1226501681-24923-1-git-send-email-bda@mnsspb.ru>
diff --git a/third_party/git/t/t5100/msg0013 b/third_party/git/t/t5100/msg0013
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/third_party/git/t/t5100/msg0013
diff --git a/third_party/git/t/t5100/msg0014 b/third_party/git/t/t5100/msg0014
new file mode 100644
index 000000000000..62e5cd2ecd1e
--- /dev/null
+++ b/third_party/git/t/t5100/msg0014
@@ -0,0 +1,18 @@
+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>
diff --git a/third_party/git/t/t5100/msg0014--scissors b/third_party/git/t/t5100/msg0014--scissors
new file mode 100644
index 000000000000..259c6a46d26a
--- /dev/null
+++ b/third_party/git/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/third_party/git/t/t5100/msg0015 b/third_party/git/t/t5100/msg0015
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/third_party/git/t/t5100/msg0015
diff --git a/third_party/git/t/t5100/msg0015--no-inbody-headers b/third_party/git/t/t5100/msg0015--no-inbody-headers
new file mode 100644
index 000000000000..be5115b1c159
--- /dev/null
+++ b/third_party/git/t/t5100/msg0015--no-inbody-headers
@@ -0,0 +1,3 @@
+From: bogosity
+  - a list
+  - of stuff
diff --git a/third_party/git/t/t5100/msg0016 b/third_party/git/t/t5100/msg0016
new file mode 100644
index 000000000000..0d9adada9643
--- /dev/null
+++ b/third_party/git/t/t5100/msg0016
@@ -0,0 +1,2 @@
+and some content
+
diff --git a/third_party/git/t/t5100/msg0016--no-inbody-headers b/third_party/git/t/t5100/msg0016--no-inbody-headers
new file mode 100644
index 000000000000..1063f5117883
--- /dev/null
+++ b/third_party/git/t/t5100/msg0016--no-inbody-headers
@@ -0,0 +1,4 @@
+Date: bogus
+
+and some content
+
diff --git a/third_party/git/t/t5100/msg0017 b/third_party/git/t/t5100/msg0017
new file mode 100644
index 000000000000..2ee090085092
--- /dev/null
+++ b/third_party/git/t/t5100/msg0017
@@ -0,0 +1,2 @@
+New content here
+
diff --git a/third_party/git/t/t5100/msg0018 b/third_party/git/t/t5100/msg0018
new file mode 100644
index 000000000000..56de83d7fcca
--- /dev/null
+++ b/third_party/git/t/t5100/msg0018
@@ -0,0 +1,2 @@
+a commit message
+
diff --git a/third_party/git/t/t5100/msg0018--no-inbody-headers b/third_party/git/t/t5100/msg0018--no-inbody-headers
new file mode 100644
index 000000000000..b1e05d3862bf
--- /dev/null
+++ b/third_party/git/t/t5100/msg0018--no-inbody-headers
@@ -0,0 +1,8 @@
+From: Another Thor
+ <a.thor@example.com>
+Subject: This one contains
+	a tab
+ and a space
+
+a commit message
+
diff --git a/third_party/git/t/t5100/nul-b64.expect b/third_party/git/t/t5100/nul-b64.expect
new file mode 100644
index 000000000000..d7d680f631b1
--- /dev/null
+++ b/third_party/git/t/t5100/nul-b64.expect
Binary files differdiff --git a/third_party/git/t/t5100/nul-b64.in b/third_party/git/t/t5100/nul-b64.in
new file mode 100644
index 000000000000..16540d961f8e
--- /dev/null
+++ b/third_party/git/t/t5100/nul-b64.in
@@ -0,0 +1,37 @@
+From 667d8940e719cddee1cfe237cbbe215e20270b09 Mon Sep 17 00:00:00 2001
+From: Junio C Hamano <gitster@pobox.com>
+Date: Sun, 25 May 2008 00:38:18 -0700
+Subject: [PATCH] second
+Content-Transfer-Encoding: base64
+
+LS0tCiBmaWxlIHwgIEJpbiAxMzU3IC0+IDEzNTcgYnl0ZXMKIDEgZmlsZXMgY2hhbmdlZCwg
+MCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2ZpbGUgYi9m
+aWxlCmluZGV4IDc3MzYxZDguLjllMDJiZTYgMTAwNjQ0Ci0tLSBhL2ZpbGUKKysrIGIvZmls
+ZQpAQCAtMSwxMiArMSwxMiBAQAogTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNl
+Y3RldHVlciBhZGlwaXNjaW5nIGVsaXQuIFN1c3BlbmRpc3NlCiBzaXQgYW1ldCB0dXJwaXMg
+ZWdldCBlc3QgY3Vyc3VzIGxhb3JlZXQuIEFsaXF1YW0gbWF1cmlzLiBQcmFlc2VudAotdm9s
+dXRwYXQuIFByb2luIGluIHB1cnVzLiBOdWxsYSB1cm5hIHNhcGllbiwgZGFwaWJ1cyBzaXQg
+YW1ldCwKK3ZvbHV0cGF0LiBQcm9pbiBpbiBwdXJ1cy4gTnVsbGEgdXJuYSBzYXBpZW4sIGRh
+cGkAdXMgc2l0IGFtZXQsCiBoZW5kcmVyaXQgbmVjLCB0ZW1wdXMgZXUsIG1pLiBVdCBwb3J0
+YSwgbGVvIGlkIHRpbmNpZHVudCB1bGxhbWNvcnBlciwKLXZlbGl0IGZlbGlzIHRyaXN0aXF1
+ZSBhbnRlLCBhdCBsb2JvcnRpcyBkaWFtIHBlZGUgdXQgZHVpLiBQcm9pbiBhYwordmVsaXQg
+ZmVsaXMgdHJpc3RpcXVlIGFudGUsIGF0IGxvAG9ydGlzIGRpYW0gcGVkZSB1dCBkdWkuIFBy
+b2luIGFjCiBsZWN0dXMuIERvbmVjIGF0IG1hc3NhIGFjIGlwc3VtIGhlbmRyZXJpdCBzb2xs
+aWNpdHVkaW4uIE5hbSBkaWN0dW0KIG5pc2kgc2VkIG1pLiBEdWlzIHNlZCBhbnRlLiBVdCB2
+aXRhZSBlc3QgdXQgZHVpIHVsdHJpY2llcyBkaWduaXNzaW0uCiAKLUluIHZlbCBvZGlvIGVn
+ZXQgbmlzbCBjb252YWxsaXMgdm9sdXRwYXQuIE1vcmJpIHZpdGFlIG5pYmguIE51bGxhbQor
+SW4gdmVsIG9kaW8gZWdldCBuaXNsIGNvbnZhbGxpcyB2b2x1dHBhdC4gTW9yAGkgdml0YWUg
+bmkAaC4gTnVsbGFtCiBhY2N1bXNhbiwgZG9sb3IgcXVpcyBhbGlxdWFtIHNjZWxlcmlzcXVl
+LCBlbGl0IGVuaW0gY29uZGltZW50dW0KIG1hdXJpcywgbm9uIHRyaXN0aXF1ZSBtYXVyaXMg
+dHVycGlzIGV0IG1hdXJpcy4gVXQgbm9uIG5pc2wuIE5hbSBkaWFtCiBtaSwgc2VtcGVyIHBv
+c3VlcmUsIGVsZWlmZW5kIHV0LCBhdWN0b3IgdmVsLCBlcmF0LiBTZWQgcG9zdWVyZQpAQCAt
+MTYsNyArMTYsNyBAQCBzZWQgZXN0LiBFdGlhbSBkaWFtIGZlbGlzLCBmZXJtZW50dW0gZWdl
+dCwgYWRpcGlzY2luZyBhdCwgcG9zdWVyZSBpbiwKIGR1aS4gRXRpYW0gbHVjdHVzLgogCiBO
+dWxsYSBpZCBhdWd1ZS4gTmFtIGlhY3VsaXMgYWNjdW1zYW4gbmlzaS4gU3VzcGVuZGlzc2Ug
+cG90ZW50aS4gTnVuYwotdmFyaXVzIGF1Z3VlIG5lYyBvcmNpLiBVdCBjb25kaW1lbnR1bSBk
+b2xvciBzYWdpdHRpcyBuaWJoLiBTdXNwZW5kaXNzZQordmFyaXVzIGF1Z3VlIG5lYyBvcmNp
+LiBVdCBjb25kaW1lbnR1bSBkb2xvciBzYWdpdHRpcyBuaQBoLiBTdXNwZW5kaXNzZQogdGVt
+cG9yIGxlY3R1cyBzZWQgbWFnbmEuIFN1c3BlbmRpc3NlIHBvdGVudGkuIE51bGxhbSB0ZW1w
+b3IgaXBzdW0uIFNlZAogbW9sZXN0aWUgdGVsbHVzLiBQaGFzZWxsdXMgbGlndWxhLiBJbiB2
+ZWhpY3VsYSB1bHRyaWNlcwogbmlzaS4gU3VzcGVuZGlzc2UgZmVsaXMgYXVndWUsIHBlbGxl
+bnRlc3F1ZSBhdCwgZGljdHVtIHZpdmVycmEsCi0tIAoxLjUuNS4xLjU0MC5nNTc3ODAKCg==
diff --git a/third_party/git/t/t5100/nul-plain b/third_party/git/t/t5100/nul-plain
new file mode 100644
index 000000000000..3d40691787b8
--- /dev/null
+++ b/third_party/git/t/t5100/nul-plain
Binary files differdiff --git a/third_party/git/t/t5100/patch0001 b/third_party/git/t/t5100/patch0001
new file mode 100644
index 000000000000..02c97746d64f
--- /dev/null
+++ b/third_party/git/t/t5100/patch0001
@@ -0,0 +1,14 @@
+---
+ 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
+
diff --git a/third_party/git/t/t5100/patch0002 b/third_party/git/t/t5100/patch0002
new file mode 100644
index 000000000000..02c97746d64f
--- /dev/null
+++ b/third_party/git/t/t5100/patch0002
@@ -0,0 +1,14 @@
+---
+ 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
+
diff --git a/third_party/git/t/t5100/patch0003 b/third_party/git/t/t5100/patch0003
new file mode 100644
index 000000000000..02c97746d64f
--- /dev/null
+++ b/third_party/git/t/t5100/patch0003
@@ -0,0 +1,14 @@
+---
+ 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
+
diff --git a/third_party/git/t/t5100/patch0004 b/third_party/git/t/t5100/patch0004
new file mode 100644
index 000000000000..196458e44e19
--- /dev/null
+++ b/third_party/git/t/t5100/patch0004
@@ -0,0 +1,93 @@
+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
+
diff --git a/third_party/git/t/t5100/patch0005 b/third_party/git/t/t5100/patch0005
new file mode 100644
index 000000000000..ab7a38373bd8
--- /dev/null
+++ b/third_party/git/t/t5100/patch0005
@@ -0,0 +1,69 @@
+---
+
+ 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 
+ 	are supported.
+ 
++-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
+ 
+ -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.
+ 
+ 	If you need to pass multiple options, separate them with a comma.
+ 
+@@ -57,6 +61,9 @@ OPTIONS
+ -h::
+ 	Print a short usage message and exit.
+ 
++-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");
+ 
+ 	# Trial and error says that this probably is the minimum set
+-	$self->{'socketo'}->write("Valid-responses ok error Valid-requests Mode M Mbinary E F Checked-in Created Updated Merged Removed\n");
++	$self->{'socketo'}->write("Valid-responses ok error Valid-requests Mode M Mbinary E Checked-in Created Updated Merged Removed\n");
+ 
+ 	$self->{'socketo'}->write("valid-requests\n");
+ 	$self->{'socketo'}->flush();
+@@ -691,7 +691,7 @@ while(<CVS>) {
+ 		unlink($tmpname);
+ 		my $mode = pmode($cvs->{'mode'});
+ 		push(@new,[$mode, $sha, $fn]); # may be resurrected!
+-	} elsif($state == 9 and /^\s+(\S+):\d(?:\.\d+)+->(\d(?:\.\d+)+)\(DEAD\)\s*$/) {
++	} elsif($state == 9 and /^\s+(\S+):\d+(?:\.\d+)+->(\d+(?:\.\d+)+)\(DEAD\)\s*$/) {
+ 		my $fn = $1;
+ 		$fn =~ s#^/+##;
+ 		push(@old,$fn);
+
+-- 
+David Kgedal
+-
+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
+
diff --git a/third_party/git/t/t5100/patch0006 b/third_party/git/t/t5100/patch0006
new file mode 100644
index 000000000000..02c97746d64f
--- /dev/null
+++ b/third_party/git/t/t5100/patch0006
@@ -0,0 +1,14 @@
+---
+ 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
+
diff --git a/third_party/git/t/t5100/patch0007 b/third_party/git/t/t5100/patch0007
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/third_party/git/t/t5100/patch0007
diff --git a/third_party/git/t/t5100/patch0008 b/third_party/git/t/t5100/patch0008
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/third_party/git/t/t5100/patch0008
diff --git a/third_party/git/t/t5100/patch0009 b/third_party/git/t/t5100/patch0009
new file mode 100644
index 000000000000..65615c34af6e
--- /dev/null
+++ b/third_party/git/t/t5100/patch0009
@@ -0,0 +1,13 @@
+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:
+ 
+-      GIT_DIFF_OPTS=-c git-diff-index -p $(cat .git/HEAD)
++      GIT_DIFF_OPTS=-c git-diff-index -p HEAD
+ 
+ 
+ 2. When the environment variable 'GIT_EXTERNAL_DIFF' is set, the
diff --git a/third_party/git/t/t5100/patch0010 b/third_party/git/t/t5100/patch0010
new file mode 100644
index 000000000000..436821c97aa5
--- /dev/null
+++ b/third_party/git/t/t5100/patch0010
@@ -0,0 +1,20 @@
+---
+ 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
+
diff --git a/third_party/git/t/t5100/patch0011 b/third_party/git/t/t5100/patch0011
new file mode 100644
index 000000000000..0988713761d4
--- /dev/null
+++ b/third_party/git/t/t5100/patch0011
@@ -0,0 +1,22 @@
+---
+ 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);
+ 
+ 			if (!handle_boundary())
+ 				goto handle_body_out;
+-- 
+1.6.0.rc2
+
+
diff --git a/third_party/git/t/t5100/patch0012 b/third_party/git/t/t5100/patch0012
new file mode 100644
index 000000000000..36a0b681610d
--- /dev/null
+++ b/third_party/git/t/t5100/patch0012
@@ -0,0 +1,30 @@
+---
+ 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
diff --git a/third_party/git/t/t5100/patch0012--message-id b/third_party/git/t/t5100/patch0012--message-id
new file mode 100644
index 000000000000..36a0b681610d
--- /dev/null
+++ b/third_party/git/t/t5100/patch0012--message-id
@@ -0,0 +1,30 @@
+---
+ 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
diff --git a/third_party/git/t/t5100/patch0013 b/third_party/git/t/t5100/patch0013
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/third_party/git/t/t5100/patch0013
diff --git a/third_party/git/t/t5100/patch0014 b/third_party/git/t/t5100/patch0014
new file mode 100644
index 000000000000..3f3825f9f297
--- /dev/null
+++ b/third_party/git/t/t5100/patch0014
@@ -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
diff --git a/third_party/git/t/t5100/patch0014--scissors b/third_party/git/t/t5100/patch0014--scissors
new file mode 100644
index 000000000000..3f3825f9f297
--- /dev/null
+++ b/third_party/git/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
diff --git a/third_party/git/t/t5100/patch0015 b/third_party/git/t/t5100/patch0015
new file mode 100644
index 000000000000..ad64848873fc
--- /dev/null
+++ b/third_party/git/t/t5100/patch0015
@@ -0,0 +1,8 @@
+---
+diff --git a/foo b/foo
+index e69de29..d95f3ad 100644
+--- a/foo
++++ b/foo
+@@ -0,0 +1 @@
++content
+
diff --git a/third_party/git/t/t5100/patch0015--no-inbody-headers b/third_party/git/t/t5100/patch0015--no-inbody-headers
new file mode 100644
index 000000000000..ad64848873fc
--- /dev/null
+++ b/third_party/git/t/t5100/patch0015--no-inbody-headers
@@ -0,0 +1,8 @@
+---
+diff --git a/foo b/foo
+index e69de29..d95f3ad 100644
+--- a/foo
++++ b/foo
+@@ -0,0 +1 @@
++content
+
diff --git a/third_party/git/t/t5100/patch0016 b/third_party/git/t/t5100/patch0016
new file mode 100644
index 000000000000..ad64848873fc
--- /dev/null
+++ b/third_party/git/t/t5100/patch0016
@@ -0,0 +1,8 @@
+---
+diff --git a/foo b/foo
+index e69de29..d95f3ad 100644
+--- a/foo
++++ b/foo
+@@ -0,0 +1 @@
++content
+
diff --git a/third_party/git/t/t5100/patch0016--no-inbody-headers b/third_party/git/t/t5100/patch0016--no-inbody-headers
new file mode 100644
index 000000000000..ad64848873fc
--- /dev/null
+++ b/third_party/git/t/t5100/patch0016--no-inbody-headers
@@ -0,0 +1,8 @@
+---
+diff --git a/foo b/foo
+index e69de29..d95f3ad 100644
+--- a/foo
++++ b/foo
+@@ -0,0 +1 @@
++content
+
diff --git a/third_party/git/t/t5100/patch0017 b/third_party/git/t/t5100/patch0017
new file mode 100644
index 000000000000..35cf84c9a102
--- /dev/null
+++ b/third_party/git/t/t5100/patch0017
@@ -0,0 +1,6 @@
+diff --git a/foo b/foo
+index e69de29..d95f3ad 100644
+--- a/foo
++++ b/foo
+@@ -0,0 +1 @@
++New content
diff --git a/third_party/git/t/t5100/patch0018 b/third_party/git/t/t5100/patch0018
new file mode 100644
index 000000000000..789df6d030ea
--- /dev/null
+++ b/third_party/git/t/t5100/patch0018
@@ -0,0 +1,6 @@
+diff --git a/foo b/foo
+index e69de29..d95f3ad 100644
+--- a/foo
++++ b/foo
+@@ -0,0 +1 @@
++content
diff --git a/third_party/git/t/t5100/patch0018--no-inbody-headers b/third_party/git/t/t5100/patch0018--no-inbody-headers
new file mode 100644
index 000000000000..789df6d030ea
--- /dev/null
+++ b/third_party/git/t/t5100/patch0018--no-inbody-headers
@@ -0,0 +1,6 @@
+diff --git a/foo b/foo
+index e69de29..d95f3ad 100644
+--- a/foo
++++ b/foo
+@@ -0,0 +1 @@
++content
diff --git a/third_party/git/t/t5100/quoted-from.expect b/third_party/git/t/t5100/quoted-from.expect
new file mode 100644
index 000000000000..8c9d48c85285
--- /dev/null
+++ b/third_party/git/t/t5100/quoted-from.expect
@@ -0,0 +1,3 @@
+>From the depths of history, we are stuck with the
+flaky mbox format.
+
diff --git a/third_party/git/t/t5100/quoted-from.in b/third_party/git/t/t5100/quoted-from.in
new file mode 100644
index 000000000000..847e1c4d3eac
--- /dev/null
+++ b/third_party/git/t/t5100/quoted-from.in
@@ -0,0 +1,10 @@
+From 1234567890123456789012345678901234567890 Mon Sep 17 00:00:00 2001
+From: Author Name <somebody@example.com>
+Date: Sun, 25 May 2008 00:38:18 -0700
+Subject: [PATCH] testing quoted >From
+
+>From the depths of history, we are stuck with the
+flaky mbox format.
+
+---
+patch
diff --git a/third_party/git/t/t5100/quoted-string.expect b/third_party/git/t/t5100/quoted-string.expect
new file mode 100644
index 000000000000..cab1bcebf99d
--- /dev/null
+++ b/third_party/git/t/t5100/quoted-string.expect
@@ -0,0 +1,5 @@
+Author: Author "The Author" Name
+Email: somebody@example.com
+Subject: testing quoted-pair
+Date: Sun, 25 May 2008 00:38:18 -0700
+
diff --git a/third_party/git/t/t5100/quoted-string.in b/third_party/git/t/t5100/quoted-string.in
new file mode 100644
index 000000000000..e2e627ae23cc
--- /dev/null
+++ b/third_party/git/t/t5100/quoted-string.in
@@ -0,0 +1,9 @@
+From 1234567890123456789012345678901234567890 Mon Sep 17 00:00:00 2001
+From: "Author \"The Author\" Name" <somebody@example.com>
+Date: Sun, 25 May 2008 00:38:18 -0700
+Subject: [PATCH] testing quoted-pair
+
+
+
+---
+patch
diff --git a/third_party/git/t/t5100/rfc2047-info-0001 b/third_party/git/t/t5100/rfc2047-info-0001
new file mode 100644
index 000000000000..0a383b07e323
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0001
@@ -0,0 +1,4 @@
+Author: Keith Moore
+Email: moore@cs.utk.edu
+Subject: If you can read this you understand the example.
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0002 b/third_party/git/t/t5100/rfc2047-info-0002
new file mode 100644
index 000000000000..881be75d6fa5
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0002
@@ -0,0 +1,4 @@
+Author: Olle Järnefors
+Email: ojarnef@admin.kth.se
+Subject: Time for ISO 10646?
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0003 b/third_party/git/t/t5100/rfc2047-info-0003
new file mode 100644
index 000000000000..d0f789177c21
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0003
@@ -0,0 +1,4 @@
+Author: Patrik Fältström
+Email: paf@nada.kth.se
+Subject: RFC-HDR care and feeding
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0004 b/third_party/git/t/t5100/rfc2047-info-0004
new file mode 100644
index 000000000000..f67a90a9749f
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0004
@@ -0,0 +1,4 @@
+Author: Nathaniel Borenstein (םולש ןב ילטפנ)
+Email: nsb@thumper.bellcore.com
+Subject: Test of new header generator
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0005 b/third_party/git/t/t5100/rfc2047-info-0005
new file mode 100644
index 000000000000..c27be3bf2485
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0005
@@ -0,0 +1,2 @@
+Subject: (a)
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0006 b/third_party/git/t/t5100/rfc2047-info-0006
new file mode 100644
index 000000000000..9dad474456fd
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0006
@@ -0,0 +1,2 @@
+Subject: (a b)
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0007 b/third_party/git/t/t5100/rfc2047-info-0007
new file mode 100644
index 000000000000..294f195a57bd
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0007
@@ -0,0 +1,2 @@
+Subject: (ab)
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0008 b/third_party/git/t/t5100/rfc2047-info-0008
new file mode 100644
index 000000000000..294f195a57bd
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0008
@@ -0,0 +1,2 @@
+Subject: (ab)
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0009 b/third_party/git/t/t5100/rfc2047-info-0009
new file mode 100644
index 000000000000..294f195a57bd
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0009
@@ -0,0 +1,2 @@
+Subject: (ab)
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0010 b/third_party/git/t/t5100/rfc2047-info-0010
new file mode 100644
index 000000000000..9dad474456fd
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0010
@@ -0,0 +1,2 @@
+Subject: (a b)
+
diff --git a/third_party/git/t/t5100/rfc2047-info-0011 b/third_party/git/t/t5100/rfc2047-info-0011
new file mode 100644
index 000000000000..9dad474456fd
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-info-0011
@@ -0,0 +1,2 @@
+Subject: (a b)
+
diff --git a/third_party/git/t/t5100/rfc2047-samples.mbox b/third_party/git/t/t5100/rfc2047-samples.mbox
new file mode 100644
index 000000000000..1fc224810da6
--- /dev/null
+++ b/third_party/git/t/t5100/rfc2047-samples.mbox
@@ -0,0 +1,48 @@
+From nobody Mon Sep 17 00:00:00 2001
+From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>
+To: =?ISO8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>
+CC: =?ISO8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be>
+Subject: =?ISO8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
+ =?ISO8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
+
+From nobody Mon Sep 17 00:00:00 2001
+From: =?ISO8859-1?Q?Olle_J=E4rnefors?= <ojarnef@admin.kth.se>
+To: ietf-822@dimacs.rutgers.edu, ojarnef@admin.kth.se
+Subject: Time for ISO 10646?
+
+From nobody Mon Sep 17 00:00:00 2001
+To: Dave Crocker <dcrocker@mordor.stanford.edu>
+Cc: ietf-822@dimacs.rutgers.edu, paf@comsol.se
+From: =?ISO8859-1?Q?Patrik_F=E4ltstr=F6m?= <paf@nada.kth.se>
+Subject: Re: RFC-HDR care and feeding
+
+From nobody Mon Sep 17 00:00:00 2001
+From: Nathaniel Borenstein <nsb@thumper.bellcore.com>
+      (=?ISO8859-8?b?7eXs+SDv4SDp7Oj08A==?=)
+To: Greg Vaudreuil <gvaudre@NRI.Reston.VA.US>, Ned Freed
+   <ned@innosoft.com>, Keith Moore <moore@cs.utk.edu>
+Subject: Test of new header generator
+MIME-Version: 1.0
+Content-type: text/plain; charset=ISO8859-1
+
+From nobody Mon Sep 17 00:00:00 2001
+Subject: (=?ISO8859-1?Q?a?=)
+
+From nobody Mon Sep 17 00:00:00 2001
+Subject: (=?ISO8859-1?Q?a?= b)
+
+From nobody Mon Sep 17 00:00:00 2001
+Subject: (=?ISO8859-1?Q?a?= =?ISO8859-1?Q?b?=)
+
+From nobody Mon Sep 17 00:00:00 2001
+Subject: (=?ISO8859-1?Q?a?=  =?ISO8859-1?Q?b?=)
+
+From nobody Mon Sep 17 00:00:00 2001
+Subject: (=?ISO8859-1?Q?a?=
+    =?ISO8859-1?Q?b?=)
+
+From nobody Mon Sep 17 00:00:00 2001
+Subject: (=?ISO8859-1?Q?a_b?=)
+
+From nobody Mon Sep 17 00:00:00 2001
+Subject: (=?ISO8859-1?Q?a?= =?ISO8859-2?Q?_b?=)
diff --git a/third_party/git/t/t5100/sample.mbox b/third_party/git/t/t5100/sample.mbox
new file mode 100644
index 000000000000..6d4d0e44742e
--- /dev/null
+++ b/third_party/git/t/t5100/sample.mbox
@@ -0,0 +1,720 @@
+    
+	
+    
+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
diff --git a/third_party/git/t/t5100/sample.mboxrd b/third_party/git/t/t5100/sample.mboxrd
new file mode 100644
index 000000000000..79ad5ae0e7af
--- /dev/null
+++ b/third_party/git/t/t5100/sample.mboxrd
@@ -0,0 +1,19 @@
+From mboxrd Mon Sep 17 00:00:00 2001
+From: mboxrd writer <mboxrd@example.com>
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+Subject: [PATCH] a commit with escaped From lines
+
+>From the beginning, mbox should have been mboxrd
+>>From escaped
+From not mangled but this line should have been escaped
+
+From mboxrd Mon Sep 17 00:00:00 2001
+From: mboxrd writer <mboxrd@example.com>
+Date: Fri, 9 Jun 2006 00:44:16 -0700
+Subject: [PATCH 2/2] another with fake From lines
+
+ >From unchanged
+ From also unchanged
+no trailing space, no escaping necessary and '>' was intended:
+>From
+