25740641 Update git to version 2.12.0
authorRich Burridge <rich.burridge@oracle.com>
Mon, 27 Mar 2017 13:40:48 -0700
changeset 7802 c0b65702c22a
parent 7801 0dc67d04f8bb
child 7803 bab5480f2396
25740641 Update git to version 2.12.0 25768337 git help isn't able to display help
components/git/Makefile
components/git/git.p5m
components/git/patches/gpg.patch
components/git/patches/skip-gitweb-tests.patch
components/git/patches/test.patch
components/git/test/results-64.master
--- a/components/git/Makefile	Thu Mar 23 08:04:21 2017 -0700
+++ b/components/git/Makefile	Mon Mar 27 13:40:48 2017 -0700
@@ -26,15 +26,15 @@
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		git
-COMPONENT_VERSION=	2.7.4
+COMPONENT_VERSION=	2.12.0
 COMPONENT_PROJECT_URL=	http://git-scm.com/
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.xz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:dee574defbe05ec7356a0842ddbda51315926f2fa7e39c2539f2c3dcc52e457b
+    sha256:1821766479062d052cc1897d0ded95212e81e5c7f1039786bc4aec2225a32027
 COMPONENT_ARCHIVE_URL=	https://www.kernel.org/pub/software/scm/git/$(COMPONENT_ARCHIVE)
 COMPONENT_ANITYA_ID=	5350
 
-TPNO=			27482
+TPNO=			34354
 
 #
 # man pages are a separate archive
@@ -42,7 +42,7 @@
 COMPONENT_SRC_1 =	$(COMPONENT_NAME)-manpages-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE_1 =	$(COMPONENT_SRC_1).tar.xz
 COMPONENT_ARCHIVE_HASH_1 = \
-    sha256:d04fd81ab8aa32efbe54acd27ab5c88ef4ab615313e4cdfa793dd0065899ce25
+    sha256:8b8356f8d50eff6499c5d05e87c106a7b1b48bd16de1742fa022631909804773
 COMPONENT_ARCHIVE_URL_1 = https://www.kernel.org/pub/software/scm/git/$(COMPONENT_ARCHIVE_1)
 UNPACK_ARGS_1 =		-r $(COMPONENT_SRC_1)
 PKG_PROTO_DIRS +=	$(COMPONENT_SRC_1)
@@ -73,15 +73,33 @@
 COMPONENT_INSTALL_ENV+=	PROFILE=
 COMPONENT_TEST_ENV+=	PROFILE=
 
-# We set prefix_SQ empty to make sure that perl's MakeMaker module doesn't grab
-# the value from $prefix (set by configure) and force VENDORPREFIX to $prefix,
-# thereby putting the perl modules in /usr/lib/Git.
-COMPONENT_BUILD_ARGS+=		prefix_SQ=
-COMPONENT_INSTALL_ARGS+=	prefix_SQ=
+# Always show the build and link lines for easier debugging.
+COMPONENT_BUILD_ARGS+=	V=1
+
+PERL_CONFIG = $(shell $(PERL) -MConfig -e 'print "$$Config{$(1)}"')
+
+# We want the perl modules to install the vendor_perl directory, and their
+# manpages to install in the normal perl manpage directory, but the default
+# behavior is to put the modules in /usr/lib.  Setting these four variables
+# massages the perl to get files to go where we want.
 COMPONENT_INSTALL_ARGS+=	INSTALL="$(INSTALL)"
+COMPONENT_INSTALL_ARGS+=	VENDORPREFIX=$(call PERL_CONFIG,installvendorlib)
+COMPONENT_INSTALL_ARGS+=	PERLPREFIX=$(call PERL_CONFIG,installprefix)
+COMPONENT_INSTALL_ARGS+=	INSTALLVENDORLIB='$$(VENDORPREFIX)'
+COMPONENT_INSTALL_ARGS+=	INSTALLVENDORMAN3DIR='$$(INSTALLMAN3DIR)'
 
 # get rid of terminal escape codes in test output
 COMPONENT_TEST_ENV = TERM=dumb
+
+# Some tests (like t5539-fetch-http-shallow.sh) fail if the proxies are set.
+COMPONENT_TEST_ENV += http_proxy=
+COMPONENT_TEST_ENV += https_proxy=
+COMPONENT_TEST_ENV += HTTP_PROXY=
+COMPONENT_TEST_ENV += HTTPS_PROXY=
+
+# Some tests (like t9402-git-cvsserver-refs.sh) need GNU diff.
+COMPONENT_TEST_ENV += PATH="$(GNUBIN):$(PATH)"
+
 # many failures; keep going; later versions of git are much cleaner
 COMPONENT_TEST_ARGS += -k -i
 # If GITTEST_JOBS is set, then run the jobs in parallel (to that number)
--- a/components/git/git.p5m	Thu Mar 23 08:04:21 2017 -0700
+++ b/components/git/git.p5m	Mon Mar 27 13:40:48 2017 -0700
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
 #
 
 <transform file path=usr/lib/git-core/.* -> default mode 0555>
@@ -164,7 +164,6 @@
 file path=usr/lib/git-core/git-rebase--merge
 hardlink path=usr/lib/git-core/git-receive-pack target=git
 hardlink path=usr/lib/git-core/git-reflog target=git
-file path=usr/lib/git-core/git-relink
 hardlink path=usr/lib/git-core/git-remote target=git
 hardlink path=usr/lib/git-core/git-remote-ext target=git
 hardlink path=usr/lib/git-core/git-remote-fd target=git
@@ -226,6 +225,7 @@
 file path=usr/lib/git-core/mergetools/diffuse
 file path=usr/lib/git-core/mergetools/ecmerge
 file path=usr/lib/git-core/mergetools/emerge
+file path=usr/lib/git-core/mergetools/examdiff
 file path=usr/lib/git-core/mergetools/gvimdiff
 file path=usr/lib/git-core/mergetools/gvimdiff2
 file path=usr/lib/git-core/mergetools/gvimdiff3
@@ -249,7 +249,6 @@
 file path=usr/perl5/$(PERL_VERSION)/man/man3/Git::SVN::Prompt.3
 file path=usr/perl5/$(PERL_VERSION)/man/man3/Git::SVN::Ra.3
 file path=usr/perl5/$(PERL_VERSION)/man/man3/Git::SVN::Utils.3
-file path=usr/perl5/vendor_perl/$(PERL_VERSION)/$(PERL_ARCH)/auto/Git/.packlist
 # perl/Makefile.PL installs this file if and only if 'require Error' fails.
 # Thus if git is installed, it succeeds, and the file is not installed.  So
 # ignore that and just pull from the source.
@@ -275,6 +274,7 @@
 file path=usr/share/git-core/templates/hooks/pre-commit.sample
 file path=usr/share/git-core/templates/hooks/pre-push.sample
 file path=usr/share/git-core/templates/hooks/pre-rebase.sample
+file path=usr/share/git-core/templates/hooks/pre-receive.sample
 file path=usr/share/git-core/templates/hooks/prepare-commit-msg.sample
 file path=usr/share/git-core/templates/hooks/update.sample
 file path=usr/share/git-core/templates/info/exclude
@@ -313,6 +313,7 @@
 file path=usr/share/git-gui/lib/msgs/ja.msg
 file path=usr/share/git-gui/lib/msgs/nb.msg
 file path=usr/share/git-gui/lib/msgs/pt_br.msg
+file path=usr/share/git-gui/lib/msgs/pt_pt.msg
 file path=usr/share/git-gui/lib/msgs/ru.msg
 file path=usr/share/git-gui/lib/msgs/sv.msg
 file path=usr/share/git-gui/lib/msgs/vi.msg
@@ -342,6 +343,7 @@
 file path=usr/share/gitk/lib/msgs/it.msg
 file path=usr/share/gitk/lib/msgs/ja.msg
 file path=usr/share/gitk/lib/msgs/pt_br.msg
+file path=usr/share/gitk/lib/msgs/pt_pt.msg
 file path=usr/share/gitk/lib/msgs/ru.msg
 file path=usr/share/gitk/lib/msgs/sv.msg
 file path=usr/share/gitk/lib/msgs/vi.msg
@@ -462,7 +464,6 @@
 file path=usr/share/man/man1/git-rebase.1
 file path=usr/share/man/man1/git-receive-pack.1
 file path=usr/share/man/man1/git-reflog.1
-file path=usr/share/man/man1/git-relink.1
 file path=usr/share/man/man1/git-remote-ext.1
 file path=usr/share/man/man1/git-remote-fd.1
 file path=usr/share/man/man1/git-remote-testgit.1
--- a/components/git/patches/gpg.patch	Thu Mar 23 08:04:21 2017 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-On Solaris, GnuPG's main executable is "gpg2" instead of "gpg".  Perhaps
-that should be otherwise, but until we deliver a "gpg" executable, git
-should look for "gpg2" instead.  This is not suitable for upstream.
-
---- git-2.6.1/gpg-interface.c	Fri Oct  2 15:40:47 2015
-+++ git-2.6.1/gpg-interface.c	Fri Dec  4 14:12:20 2015
[email protected]@ -5,7 +5,7 @@
- #include "sigchain.h"
- 
- static char *configured_signing_key;
--static const char *gpg_program = "gpg";
-+static const char *gpg_program = "gpg2";
- 
- #define PGP_SIGNATURE "-----BEGIN PGP SIGNATURE-----"
- #define PGP_MESSAGE "-----BEGIN PGP MESSAGE-----"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/git/patches/skip-gitweb-tests.patch	Mon Mar 27 13:40:48 2017 -0700
@@ -0,0 +1,24 @@
+The various git gitweb tests require that the perl Time::HiRes and
+HTML::Entities modules be present in order for the tests to work.
+If they aren't located, then the tests should be skipped.
+
+The check for Time::HiRes is already present in gitweb-lib.sh post 2.12.0,
+but the other check has been sent upstream.
+
+--- git-2.12.0/t/gitweb-lib.sh.orig	2017-03-20 12:16:52.497642511 +0000
++++ git-2.12.0/t/gitweb-lib.sh	2017-03-20 12:15:20.396763506 +0000
[email protected]@ -114,4 +114,14 @@
+ 	test_done
+ }
+ 
++perl -mTime::HiRes -e 0 >/dev/null 2>&1 || {
++	skip_all='skipping gitweb tests, Time::HiRes module not available'
++	test_done
++}
++
++perl -mHTML::Entities -e 0 >/dev/null 2>&1 || {
++        skip_all='skipping gitweb tests, HTML::Entities module not available'
++        test_done
++}
++
+ gitweb_init
--- a/components/git/patches/test.patch	Thu Mar 23 08:04:21 2017 -0700
+++ b/components/git/patches/test.patch	Mon Mar 27 13:40:48 2017 -0700
@@ -1,7 +1,4 @@
-A couple of tests need patching:
-
-  - There's a garbled sed command in the clone tests, which works for GNU
-    sed, but not for Solaris.
+One of the tests need patching:
 
   - Because we're doing the build in a symlink farm, one of the diff tests
     thinks that we're changing the type of the files from symlink to file,
@@ -9,19 +6,8 @@
     the working directory vs the repo directory, we just cat the files as
     real files into place.
 
-The first patch is probably fine for upstream; the latter perhaps less so.
+Unclear whether this patch should be sent upstream.
 
---- git-2.4.5/t/t5601-clone.sh	Thu Jun 25 12:15:40 2015
-+++ git-2.4.5/t/t5601-clone.sh	Thu Jul  2 12:35:08 2015
[email protected]@ -445,7 +445,7 @@
- #IPv6
- for tuah in ::1 [::1] [::1]: [email protected]::1 [email protected][::1] [email protected][::1]: [[email protected]::1] [[email protected]::1]:
- do
--	ehost=$(echo $tuah | sed -e "s/1]:/1]/ "| tr -d "[]")
-+	ehost=$(echo $tuah | sed -e "s/1]:/1]/" | tr -d "[]")
- 	test_expect_success "clone ssh://$tuah/home/user/repo" "
- 	  test_clone_url ssh://$tuah/home/user/repo $ehost /home/user/repo
- 	"
 --- git-2.4.5/t/t4018-diff-funcname.sh	Thu Jun 25 12:15:40 2015
 +++ git-2.4.5/t/t4018-diff-funcname.sh	Thu Jul  2 14:11:09 2015
 @@ -79,8 +79,11 @@
@@ -69,34 +55,3 @@
  	$(MAKE) clean
 
 
-This is a Solaris-specific patch that turns on GnuPG in the tests, which it
-wouldn't otherwise because we don't deliver GnuPG in its usual path.
-
---- git-2.7.4/t/lib-gpg.sh	Thu Mar 17 13:47:59 2016
-+++ git-2.7.4/t/lib-gpg.sh	Tue Mar 22 14:40:59 2016
[email protected]@ -1,5 +1,9 @@
- #!/bin/sh
- 
-+gpg() {
-+	gpg2 "[email protected]"
-+}
-+
- gpg_version=$(gpg --version 2>&1)
- if test $? = 127; then
- 	say "You do not seem to have gpg installed"
-
-
-This allows Apache 2.4 to load on Solaris.
-
---- git-2.7.4/t/lib-httpd/apache.conf	Thu Mar 17 13:47:59 2016
-+++ git-2.7.4/t/lib-httpd/apache.conf	Tue Mar 22 15:15:56 2016
[email protected]@ -64,6 +64,9 @@
- <IfModule !mod_mpm_prefork.c>
- 	LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
- </IfModule>
-+<IfModule !mod_unixd.c>
-+	LoadModule unixd_module modules/mod_unixd.so
-+</IfModule>
- </IfVersion>
- 
- PassEnv GIT_VALGRIND
--- a/components/git/test/results-64.master	Thu Mar 23 08:04:21 2017 -0700
+++ b/components/git/test/results-64.master	Mon Mar 27 13:40:48 2017 -0700
@@ -84,39 +84,44 @@
 ok 3 - plain through aliased command, outside any git repo
 ok 4 - plain nested through aliased command
 ok 5 - plain nested in bare through aliased command
-ok 6 - plain with GIT_WORK_TREE
-ok 7 - plain bare
-ok 8 - plain bare with GIT_WORK_TREE
-ok 9 - GIT_DIR bare
-ok 10 - init --bare
-ok 11 - GIT_DIR non-bare
-ok 12 - GIT_DIR & GIT_WORK_TREE (1)
-ok 13 - GIT_DIR & GIT_WORK_TREE (2)
-ok 14 - reinit
-ok 15 - init with --template
-ok 16 - init with --template (blank)
-ok 17 - init with init.templatedir set
-ok 18 - init --bare/--shared overrides system/global config
-ok 19 - init honors global core.sharedRepository
-ok 20 - init allows insanely long --template
-ok 21 - init creates a new directory
-ok 22 - init creates a new bare directory
-ok 23 - init recreates a directory
-ok 24 - init recreates a new bare directory
-ok 25 - init creates a new deep directory
-ok 26 - init creates a new deep directory (umask vs. shared)
-ok 27 - init notices EEXIST (1)
-ok 28 - init notices EEXIST (2)
-ok 29 - init notices EPERM
-ok 30 - init creates a new bare directory with global --bare
-ok 31 - init prefers command line to GIT_DIR
-ok 32 - init with separate gitdir
-ok 33 - re-init on .git file
-ok 34 - re-init to update git link
-ok 35 - re-init to move gitdir
-ok 36 - re-init to move gitdir symlink
-# passed all 36 test(s)
-1..36
+ok 6 - No extra GIT_* on alias scripts
+ok 7 - plain with GIT_WORK_TREE
+ok 8 - plain bare
+ok 9 - plain bare with GIT_WORK_TREE
+ok 10 - GIT_DIR bare
+ok 11 - init --bare
+ok 12 - GIT_DIR non-bare
+ok 13 - GIT_DIR & GIT_WORK_TREE (1)
+ok 14 - GIT_DIR & GIT_WORK_TREE (2)
+ok 15 - reinit
+ok 16 - init with --template
+ok 17 - init with --template (blank)
+ok 18 - init with init.templatedir set
+ok 19 - init --bare/--shared overrides system/global config
+ok 20 - init honors global core.sharedRepository
+ok 21 - init allows insanely long --template
+ok 22 - init creates a new directory
+ok 23 - init creates a new bare directory
+ok 24 - init recreates a directory
+ok 25 - init recreates a new bare directory
+ok 26 - init creates a new deep directory
+ok 27 - init creates a new deep directory (umask vs. shared)
+ok 28 - init notices EEXIST (1)
+ok 29 - init notices EEXIST (2)
+ok 30 - init notices EPERM
+ok 31 - init creates a new bare directory with global --bare
+ok 32 - init prefers command line to GIT_DIR
+ok 33 - init with separate gitdir
+ok 34 - re-init on .git file
+ok 35 - re-init to update git link
+ok 36 - re-init to move gitdir
+ok 37 - re-init to move gitdir symlink
+ok 38 # skip .git hidden (missing MINGW)
+ok 39 # skip bare git dir not hidden (missing MINGW)
+ok 40 - remote init from does not use config from cwd
+ok 41 - re-init from a linked worktree
+# passed all 41 test(s)
+1..41
 *** t0002-gitfile.sh ***
 ok 1 - initial setup
 ok 2 - bad setup: invalid .git file format
@@ -128,12 +133,11 @@
 ok 8 - check write-tree
 ok 9 - check commit-tree
 ok 10 - check rev-list
-not ok 11 - setup_git_dir twice in subdir # TODO known breakage
+ok 11 - setup_git_dir twice in subdir
 ok 12 - enter_repo non-strict mode
 ok 13 - enter_repo linked checkout
 ok 14 - enter_repo strict mode
-# still have 1 known breakage(s)
-# passed all remaining 13 test(s)
+# passed all 14 test(s)
 1..14
 *** t0003-attributes.sh ***
 ok 1 - setup
@@ -189,44 +193,56 @@
 ok 9 - relative date (20 years ago)
 ok 10 - relative date (12 months ago)
 ok 11 - relative date (2 years ago)
-ok 12 - parse date (2008)
-ok 13 - parse date (2008-02)
-ok 14 - parse date (2008-02-14)
-ok 15 - parse date (2008-02-14 20:30:45)
-ok 16 - parse date (2008-02-14 20:30:45 -0500)
-ok 17 - parse date (2008-02-14 20:30:45 -0015)
-ok 18 - parse date (2008-02-14 20:30:45 -5)
-ok 19 - parse date (2008-02-14 20:30:45 -5:)
-ok 20 - parse date (2008-02-14 20:30:45 -05)
-ok 21 - parse date (2008-02-14 20:30:45 -:30)
-ok 22 - parse date (2008-02-14 20:30:45 -05:00)
-ok 23 - parse date (2008-02-14 20:30:45 TZ=EST5)
-ok 24 - parse approxidate (now)
-ok 25 - parse approxidate (5 seconds ago)
-ok 26 - parse approxidate (5.seconds.ago)
-ok 27 - parse approxidate (10.minutes.ago)
-ok 28 - parse approxidate (yesterday)
-ok 29 - parse approxidate (3.days.ago)
-ok 30 - parse approxidate (3.weeks.ago)
-ok 31 - parse approxidate (3.months.ago)
-ok 32 - parse approxidate (2.years.3.months.ago)
-ok 33 - parse approxidate (6am yesterday)
-ok 34 - parse approxidate (6pm yesterday)
-ok 35 - parse approxidate (3:00)
-ok 36 - parse approxidate (15:00)
-ok 37 - parse approxidate (noon today)
-ok 38 - parse approxidate (noon yesterday)
-ok 39 - parse approxidate (last tuesday)
-ok 40 - parse approxidate (July 5th)
-ok 41 - parse approxidate (06/05/2009)
-ok 42 - parse approxidate (06.05.2009)
-ok 43 - parse approxidate (Jun 6, 5AM)
-ok 44 - parse approxidate (5AM Jun 6)
-ok 45 - parse approxidate (6AM, June 7, 2009)
-ok 46 - parse approxidate (2008-12-01)
-ok 47 - parse approxidate (2009-12-01)
-# passed all 47 test(s)
-1..47
+ok 12 - show date (iso8601:1466000000 +0200)
+ok 13 - show date (iso8601-strict:1466000000 +0200)
+ok 14 - show date (rfc2822:1466000000 +0200)
+ok 15 - show date (short:1466000000 +0200)
+ok 16 - show date (default:1466000000 +0200)
+ok 17 - show date (raw:1466000000 +0200)
+ok 18 - show date (unix:1466000000 +0200)
+ok 19 - show date (iso-local:1466000000 +0200)
+ok 20 - show date (raw-local:1466000000 +0200)
+ok 21 - show date (unix-local:1466000000 +0200)
+ok 22 - show date (iso:5758122296 -0400)
+ok 23 - show date (iso-local:5758122296 -0400)
+ok 24 - parse date (2008)
+ok 25 - parse date (2008-02)
+ok 26 - parse date (2008-02-14)
+ok 27 - parse date (2008-02-14 20:30:45)
+ok 28 - parse date (2008-02-14 20:30:45 -0500)
+ok 29 - parse date (2008-02-14 20:30:45 -0015)
+ok 30 - parse date (2008-02-14 20:30:45 -5)
+ok 31 - parse date (2008-02-14 20:30:45 -5:)
+ok 32 - parse date (2008-02-14 20:30:45 -05)
+ok 33 - parse date (2008-02-14 20:30:45 -:30)
+ok 34 - parse date (2008-02-14 20:30:45 -05:00)
+ok 35 - parse date (2008-02-14 20:30:45 TZ=EST5)
+ok 36 - parse approxidate (now)
+ok 37 - parse approxidate (5 seconds ago)
+ok 38 - parse approxidate (5.seconds.ago)
+ok 39 - parse approxidate (10.minutes.ago)
+ok 40 - parse approxidate (yesterday)
+ok 41 - parse approxidate (3.days.ago)
+ok 42 - parse approxidate (3.weeks.ago)
+ok 43 - parse approxidate (3.months.ago)
+ok 44 - parse approxidate (2.years.3.months.ago)
+ok 45 - parse approxidate (6am yesterday)
+ok 46 - parse approxidate (6pm yesterday)
+ok 47 - parse approxidate (3:00)
+ok 48 - parse approxidate (15:00)
+ok 49 - parse approxidate (noon today)
+ok 50 - parse approxidate (noon yesterday)
+ok 51 - parse approxidate (last tuesday)
+ok 52 - parse approxidate (July 5th)
+ok 53 - parse approxidate (06/05/2009)
+ok 54 - parse approxidate (06.05.2009)
+ok 55 - parse approxidate (Jun 6, 5AM)
+ok 56 - parse approxidate (5AM Jun 6)
+ok 57 - parse approxidate (6AM, June 7, 2009)
+ok 58 - parse approxidate (2008-12-01)
+ok 59 - parse approxidate (2009-12-01)
+# passed all 59 test(s)
+1..59
 *** t0007-git-var.sh ***
 ok 1 - get GIT_AUTHOR_IDENT
 ok 2 - get GIT_COMMITTER_IDENT
@@ -668,6 +684,13 @@
 ok 15 - string interning
 # passed all 15 test(s)
 1..15
+*** t0012-help.sh ***
+ok 1 - setup
+ok 2 - works for commands and guides by default
+ok 3 - --exclude-guides does not work for guides
+ok 4 - --help does not work for guides
+# passed all 4 test(s)
+1..4
 *** t0020-crlf.sh ***
 ok 1 - setup
 ok 2 - safecrlf: autocrlf=input, all CRLF
@@ -719,8 +742,19 @@
 ok 10 # skip filter large file (missing EXPENSIVE)
 ok 11 - filter: clean empty file
 ok 12 - filter: smudge empty file
-# passed all 12 test(s)
-1..12
+ok 13 - disable filter with empty override
+ok 14 - diff does not reuse worktree files that need cleaning
+ok 15 - required process filter should filter data
+ok 16 - required process filter takes precedence
+ok 17 - required process filter should be used only for "clean" operation only
+ok 18 - required process filter should process multiple packets
+ok 19 - required process filter with clean error should fail
+ok 20 - process filter should restart after unexpected write failure
+ok 21 - process filter should not be restarted if it signals an error
+ok 22 - process filter abort stops processing of all further files
+ok 23 - invalid process filter must fail (and not hang!)
+# passed all 23 test(s)
+1..23
 *** t0022-crlf-rename.sh ***
 ok 1 - setup
 ok 2 - diff -M
@@ -746,7 +780,7 @@
 ok 6 - eol=crlf gives a normalized file CRLFs with autocrlf=input
 ok 7 - eol=lf gives a normalized file LFs with autocrlf=true
 ok 8 - autocrlf=true does not normalize CRLF files
-ok 9 - text=auto, autocrlf=true _does_ normalize CRLF files
+ok 9 - text=auto, autocrlf=true does not normalize CRLF files
 ok 10 - text=auto, autocrlf=true does not normalize binary files
 ok 11 - eol=crlf _does_ normalize binary files
 # passed all 11 test(s)
@@ -787,9 +821,10 @@
 ok 22 - -c with newline only
 ok 23 - --comment-lines with single line
 ok 24 - -c with changed comment char
-ok 25 - avoid SP-HT sequence in commented line
-# passed all 25 test(s)
-1..25
+ok 25 - -c with comment char defined in .git/config
+ok 26 - avoid SP-HT sequence in commented line
+# passed all 26 test(s)
+1..26
 *** t0040-parse-options.sh ***
 ok 1 - test help
 ok 2 - OPT_BOOL() #1
@@ -833,8 +868,14 @@
 ok 40 - negation of OPT_NONEG flags is not ambiguous
 ok 41 - --list keeps list of strings
 ok 42 - --no-list resets list
-# passed all 42 test(s)
-1..42
+ok 43 - multiple quiet levels
+ok 44 - multiple verbose levels
+ok 45 - --no-quiet sets --quiet to 0
+ok 46 - --no-quiet resets multiple -q to 0
+ok 47 - --no-verbose sets verbose to 0
+ok 48 - --no-verbose resets multiple verbose to 0
+# passed all 48 test(s)
+1..48
 *** t0050-filesystem.sh ***
 ok 1 - detection of case insensitive filesystem during repo init
 ok 2 - detection of filesystem w/o symlink support during repo init
@@ -1020,15 +1061,56 @@
 ok 150 - git-path GIT_COMMON_DIR=bar config => bar/config
 ok 151 - git-path GIT_COMMON_DIR=bar packed-refs => bar/packed-refs
 ok 152 - git-path GIT_COMMON_DIR=bar shallow => bar/shallow
-# passed all 152 test(s)
-1..152
+ok 153 - test_submodule_relative_url: ../ ../foo ../submodule => ../../submodule
+ok 154 - test_submodule_relative_url: ../ ../foo/bar ../submodule => ../../foo/submodule
+ok 155 - test_submodule_relative_url: ../ ../foo/submodule ../submodule => ../../foo/submodule
+ok 156 - test_submodule_relative_url: ../ ./foo ../submodule => ../submodule
+ok 157 - test_submodule_relative_url: ../ ./foo/bar ../submodule => ../foo/submodule
+ok 158 - test_submodule_relative_url: ../../../ ../foo/bar ../sub/a/b/c => ../../../../foo/sub/a/b/c
+ok 159 - test_submodule_relative_url: ../ $(@D)/t/trash directory.t0060-path-utils/addtest ../repo => $(@D)/t/trash directory.t0060-path-utils/repo
+ok 160 - test_submodule_relative_url: ../ foo/bar ../submodule => ../foo/submodule
+ok 161 - test_submodule_relative_url: ../ foo ../submodule => ../submodule
+ok 162 - test_submodule_relative_url: (null) ../foo/bar ../sub/a/b/c => ../foo/sub/a/b/c
+ok 163 - test_submodule_relative_url: (null) ../foo/bar ../sub/a/b/c/ => ../foo/sub/a/b/c
+ok 164 - test_submodule_relative_url: (null) ../foo/bar/ ../sub/a/b/c => ../foo/sub/a/b/c
+ok 165 - test_submodule_relative_url: (null) ../foo/bar ../submodule => ../foo/submodule
+ok 166 - test_submodule_relative_url: (null) ../foo/submodule ../submodule => ../foo/submodule
+ok 167 - test_submodule_relative_url: (null) ../foo ../submodule => ../submodule
+ok 168 - test_submodule_relative_url: (null) ./foo/bar ../submodule => foo/submodule
+ok 169 - test_submodule_relative_url: (null) ./foo ../submodule => submodule
+ok 170 - test_submodule_relative_url: (null) //somewhere else/repo ../subrepo => //somewhere else/subrepo
+ok 171 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils/subsuper_update_r ../subsubsuper_update_r => $(@D)/t/trash directory.t0060-path-utils/subsubsuper_update_r
+ok 172 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils/super_update_r2 ../subsuper_update_r => $(@D)/t/trash directory.t0060-path-utils/subsuper_update_r
+ok 173 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils/. ../. => $(@D)/t/trash directory.t0060-path-utils/.
+ok 174 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils ./. => $(@D)/t/trash directory.t0060-path-utils/.
+ok 175 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils/addtest ../repo => $(@D)/t/trash directory.t0060-path-utils/repo
+ok 176 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils ./å äö => $(@D)/t/trash directory.t0060-path-utils/å äö
+ok 177 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils/. ../submodule => $(@D)/t/trash directory.t0060-path-utils/submodule
+ok 178 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils/submodule ../submodule => $(@D)/t/trash directory.t0060-path-utils/submodule
+ok 179 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils/home2/../remote ../bundle1 => $(@D)/t/trash directory.t0060-path-utils/home2/../bundle1
+ok 180 - test_submodule_relative_url: (null) $(@D)/t/trash directory.t0060-path-utils/submodule_update_repo ./. => $(@D)/t/trash directory.t0060-path-utils/submodule_update_repo/.
+ok 181 - test_submodule_relative_url: (null) file:///tmp/repo ../subrepo => file:///tmp/subrepo
+ok 182 - test_submodule_relative_url: (null) foo/bar ../submodule => foo/submodule
+ok 183 - test_submodule_relative_url: (null) foo ../submodule => submodule
+ok 184 - test_submodule_relative_url: (null) helper:://hostname/repo ../subrepo => helper:://hostname/subrepo
+ok 185 - test_submodule_relative_url: (null) ssh://hostname/repo ../subrepo => ssh://hostname/subrepo
+ok 186 - test_submodule_relative_url: (null) ssh://hostname:22/repo ../subrepo => ssh://hostname:22/subrepo
+ok 187 - test_submodule_relative_url: (null) [email protected]:path/to/repo ../subrepo => [email protected]:path/to/subrepo
+ok 188 - test_submodule_relative_url: (null) [email protected]:repo ../subrepo => [email protected]:subrepo
+# passed all 188 test(s)
+1..188
 *** t0061-run-command.sh ***
 ok 1 - start_command reports ENOENT
 ok 2 - run_command can run a command
 ok 3 - run_command reports EACCES
 ok 4 - unreadable directory in PATH
-# passed all 4 test(s)
-1..4
+ok 5 - run_command runs in parallel with more jobs available than tasks
+ok 6 - run_command runs in parallel with as many jobs as tasks
+ok 7 - run_command runs in parallel with more tasks than jobs available
+ok 8 - run_command is asked to abort gracefully
+ok 9 - run_command outputs 
+# passed all 9 test(s)
+1..9
 *** t0062-revision-walking.sh ***
 ok 1 - setup
 ok 2 - revision walking can be done twice
@@ -1171,15 +1253,20 @@
 # lib-gettext: Found 'is_IS.UTF-8' as an is_IS UTF-8 locale
 # lib-gettext: Found 'is_IS.ISO8859-1' as an is_IS ISO-8859-1 locale
 # run 0: Perl Git::I18N API (perl $(@D)/t/t0202/test.pl)
-1..8
+1..13
 ok 1 - Testing Git::I18N with NO Perl gettext library
 ok 2 - Git::I18N is located at $(@D)/t/../perl/blib/lib/Git/I18N.pm
-ok 3 - sanity: Git::I18N has 1 export(s)
+ok 3 - sanity: Git::I18N has 3 export(s)
 ok 4 - sanity: Git::I18N exports everything by default
-ok 5 - sanity: __ has a $ prototype
-ok 6 - Passing a string through __() in the C locale works
-ok 7 - Without a gettext library + <C> locale <TEST: A Perl test string> turns into <TEST: A Perl test string>
-ok 8 - Without a gettext library + <is> locale <TEST: A Perl test string> turns into <TEST: A Perl test string>
+ok 5 - sanity: __n has a $$$ prototype
+ok 6 - sanity: __ has a $ prototype
+ok 7 - sanity: N__ has a $ prototype
+ok 8 - Passing a string through __() in the C locale works
+ok 9 - Get singular string through __n() in C locale
+ok 10 - Get plural string through __n() in C locale
+ok 11 - Passing a string through N__() in the C locale works
+ok 12 - Without a gettext library + <C> locale <TEST: A Perl test string> turns into <TEST: A Perl test string>
+ok 13 - Without a gettext library + <is> locale <TEST: A Perl test string> turns into <TEST: A Perl test string>
 # test_external test Perl Git::I18N API was ok
 # test_external_without_stderr test no stderr: Perl Git::I18N API was ok
 *** t0203-gettext-setlocale-sanity.sh ***
@@ -1242,8 +1329,9 @@
 ok 18 - pull username from config
 ok 19 - http paths can be part of context
 ok 20 - helpers can abort the process
-# passed all 20 test(s)
-1..20
+ok 21 - empty helper spec resets helper list
+# passed all 21 test(s)
+1..21
 *** t0301-credential-cache.sh ***
 ok 1 - helper (cache) has no existing data
 ok 2 - helper (cache) stores password
@@ -1419,11 +1507,12 @@
 ok 23 - DF vs DF/DF case test.
 ok 24 - a/b (untracked) vs a case setup.
 ok 25 - a/b (untracked) vs a, plus c/d case test.
-ok 26 - a/b vs a, plus c/d case setup.
-ok 27 - a/b vs a, plus c/d case test.
-ok 28 - -m references the correct modified tree
-# passed all 28 test(s)
-1..28
+ok 26 - read-tree supports the super-prefix
+ok 27 - a/b vs a, plus c/d case setup.
+ok 28 - a/b vs a, plus c/d case test.
+ok 29 - -m references the correct modified tree
+# passed all 29 test(s)
+1..29
 *** t1002-read-tree-m-u-2way.sh ***
 ok 1 - setup
 ok 2 - 1, 2, 3 - no carry forward
@@ -1565,7 +1654,7 @@
 ok 78 - --batch-check for a non-existent named object
 ok 79 - --batch-check for a non-existent hash
 ok 80 - --batch for an existent and a non-existent hash
-ok 81 - --batch-check for an emtpy line
+ok 81 - --batch-check for an empty line
 ok 82 - empty --batch-check notices missing object
 ok 83 - --batch with multiple sha1s gives correct format
 ok 84 - --batch-check with multiple sha1s gives correct format
@@ -1610,29 +1699,33 @@
 ok 10 - hash a file and write to database
 ok 11 - blob exists in database
 ok 12 - git hash-object --stdin file1 <file0 first operates on file0, then file1
-ok 13 - check that appropriate filter is invoke when --path is used
-ok 14 - check that --no-filters option works
-ok 15 - check that --no-filters option works with --stdin-paths
-ok 16 - hash from stdin and write to database (-w --stdin)
-ok 17 - blob exists in database
-ok 18 - hash from stdin and write to database (--stdin -w)
+ok 13 - set up crlf tests
+ok 14 - check that appropriate filter is invoke when --path is used
+ok 15 - gitattributes also work in a subdirectory
+ok 16 - check that --no-filters option works
+ok 17 - check that --no-filters option works with --stdin-paths
+ok 18 - hash from stdin and write to database (-w --stdin)
 ok 19 - blob exists in database
-ok 20 - hash two files with names on stdin
-ok 21 - hash two files with names on stdin and write to database (-w --stdin-paths)
-ok 22 - blob exists in database
-ok 23 - blob exists in database
-ok 24 - hash two files with names on stdin and write to database (--stdin-paths -w)
+ok 20 - hash from stdin and write to database (--stdin -w)
+ok 21 - blob exists in database
+ok 22 - hash two files with names on stdin
+ok 23 - hash two files with names on stdin and write to database (-w --stdin-paths)
+ok 24 - blob exists in database
 ok 25 - blob exists in database
-ok 26 - blob exists in database
-ok 27 - corrupt tree
-ok 28 - corrupt commit
-ok 29 - corrupt tag
-ok 30 - hash-object complains about bogus type name
-ok 31 - hash-object complains about truncated type name
-ok 32 - --literally
-ok 33 - --literally with extra-long type
-# passed all 33 test(s)
-1..33
+ok 26 - hash two files with names on stdin and write to database (--stdin-paths -w)
+ok 27 - blob exists in database
+ok 28 - blob exists in database
+ok 29 - too-short tree
+ok 30 - malformed mode in tree
+ok 31 - empty filename in tree
+ok 32 - corrupt commit
+ok 33 - corrupt tag
+ok 34 - hash-object complains about bogus type name
+ok 35 - hash-object complains about truncated type name
+ok 36 - --literally
+ok 37 - --literally with extra-long type
+# passed all 37 test(s)
+1..37
 *** t1008-read-tree-overlay.sh ***
 ok 1 - setup
 ok 2 - multi-read
@@ -1775,26 +1868,34 @@
 1..3
 *** t1050-large.sh ***
 ok 1 - setup
-ok 2 - add a large file or two
-ok 3 - checkout a large file
-ok 4 - packsize limit
-ok 5 - diff --raw
-ok 6 - diff --stat
-ok 7 - diff
-ok 8 - diff --cached
-ok 9 - hash-object
-ok 10 - cat-file a large file
-ok 11 - cat-file a large file from a tag
-ok 12 - git-show a large file
-ok 13 - index-pack
-ok 14 - repack
-ok 15 - pack-objects with large loose object
-ok 16 - tar achiving
-ok 17 - zip achiving, store only
-ok 18 - zip achiving, deflate
-ok 19 - fsck
-# passed all 19 test(s)
-1..19
+ok 2 - add with -c core.compression=0
+ok 3 - add with -c core.compression=9
+ok 4 - add with -c core.compression=0 -c pack.compression=0
+ok 5 - add with -c core.compression=9 -c pack.compression=0
+ok 6 - add with -c core.compression=0 -c pack.compression=9
+ok 7 - add with -c core.compression=9 -c pack.compression=9
+ok 8 - add with -c pack.compression=0
+ok 9 - add with -c pack.compression=9
+ok 10 - add a large file or two
+ok 11 - checkout a large file
+ok 12 - packsize limit
+ok 13 - diff --raw
+ok 14 - diff --stat
+ok 15 - diff
+ok 16 - diff --cached
+ok 17 - hash-object
+ok 18 - cat-file a large file
+ok 19 - cat-file a large file from a tag
+ok 20 - git-show a large file
+ok 21 - index-pack
+ok 22 - repack
+ok 23 - pack-objects with large loose object
+ok 24 - tar achiving
+ok 25 - zip achiving, store only
+ok 26 - zip achiving, deflate
+ok 27 - fsck large blobs
+# passed all 27 test(s)
+1..27
 *** t1051-large-conversion.sh ***
 ok 1 - setup input tests
 ok 2 - autocrlf=true converts on input
@@ -1948,48 +2049,63 @@
 ok 74 - numbers
 ok 75 - --int is at least 64 bits
 ok 76 - invalid unit
-ok 77 - bool
-ok 78 - invalid bool (--get)
-ok 79 - invalid bool (set)
-ok 80 - set --bool
-ok 81 - set --int
-ok 82 - get --bool-or-int
-ok 83 - set --bool-or-int
-ok 84 - set --path
-ok 85 - get --path
-ok 86 - get --path copes with unset $HOME
-ok 87 - get --path barfs on boolean variable
-ok 88 - quoting
-ok 89 - key with newline
-ok 90 - value with newline
-ok 91 - value continued on next line
-ok 92 - --null --list
-ok 93 - --null --get-regexp
-ok 94 - inner whitespace kept verbatim
-ok 95 - symlinked configuration
-ok 96 - nonexistent configuration
-ok 97 - symlink to nonexistent configuration
-ok 98 - check split_cmdline return
-ok 99 - git -c "key=value" support
-ok 100 - git -c can represent empty string
-ok 101 - key sanity-checking
-ok 102 - git -c works with aliases of builtins
-ok 103 - git -c does not split values on equals
-ok 104 - git -c dies on bogus config
-ok 105 - git -c complains about empty key
-ok 106 - git -c complains about empty key and value
-ok 107 - git config --edit works
-ok 108 - git config --edit respects core.editor
-ok 109 - barf on syntax error
-ok 110 - barf on incomplete section header
-ok 111 - barf on incomplete string
-ok 112 - urlmatch
-not ok 113 - unsetting the last key in a section removes header # TODO known breakage
-not ok 114 - adding a key into an empty section reuses header # TODO known breakage
-ok 115 - preserves existing permissions
+ok 77 - invalid stdin config
+ok 78 - bool
+ok 79 - invalid bool (--get)
+ok 80 - invalid bool (set)
+ok 81 - set --bool
+ok 82 - set --int
+ok 83 - get --bool-or-int
+ok 84 - set --bool-or-int
+ok 85 - set --path
+ok 86 - get --path
+ok 87 - get --path copes with unset $HOME
+ok 88 - get --path barfs on boolean variable
+ok 89 - quoting
+ok 90 - key with newline
+ok 91 - value with newline
+ok 92 - value continued on next line
+ok 93 - --null --list
+ok 94 - --null --get-regexp
+ok 95 - inner whitespace kept verbatim
+ok 96 - symlinked configuration
+ok 97 - nonexistent configuration
+ok 98 - symlink to nonexistent configuration
+ok 99 - check split_cmdline return
+ok 100 - git -c "key=value" support
+ok 101 - git -c can represent empty string
+ok 102 - key sanity-checking
+ok 103 - git -c works with aliases of builtins
+ok 104 - git -c does not split values on equals
+ok 105 - git -c dies on bogus config
+ok 106 - git -c complains about empty key
+ok 107 - git -c complains about empty key and value
+ok 108 - multiple git -c appends config
+ok 109 - git -c is not confused by empty environment
+ok 110 - git config --edit works
+ok 111 - git config --edit respects core.editor
+ok 112 - barf on syntax error
+ok 113 - barf on incomplete section header
+ok 114 - barf on incomplete string
+ok 115 - urlmatch
+not ok 116 - unsetting the last key in a section removes header # TODO known breakage
+not ok 117 - adding a key into an empty section reuses header # TODO known breakage
+ok 118 - preserves existing permissions
+ok 119 - set up --show-origin tests
+ok 120 - --show-origin with --list
+ok 121 - --show-origin with --list --null
+ok 122 - --show-origin with single file
+ok 123 - --show-origin with --get-regexp
+ok 124 - --show-origin getting a single key
+ok 125 - set up custom config file
+ok 126 - --show-origin escape special file name characters
+ok 127 - --show-origin stdin
+ok 128 - --show-origin stdin with file include
+ok 129 - --show-origin blob
+ok 130 - --show-origin blob ref
 # still have 2 known breakage(s)
-# passed all remaining 113 test(s)
-1..115
+# passed all remaining 128 test(s)
+1..130
 *** t1301-shared-repo.sh ***
 ok 1 - shared = 0400 (faulty permission u-w)
 ok 2 - shared=1 does not clear bits preset by umask 002
@@ -2009,8 +2125,12 @@
 ok 16 - info/refs respects umask in unshared repo
 ok 17 - git reflog expire honors core.sharedRepository
 ok 18 - forced modes
-# passed all 18 test(s)
-1..18
+ok 19 - remote init does not use config from cwd
+ok 20 - re-init respects core.sharedrepository (local)
+ok 21 - re-init respects core.sharedrepository (remote)
+ok 22 - template can set core.sharedrepository
+# passed all 22 test(s)
+1..22
 *** t1302-repo-version.sh ***
 ok 1 - setup
 ok 2 - gitdir selection on normal repos
@@ -2138,8 +2258,15 @@
 ok 25 - proper error on error in custom config files
 ok 26 - check line errors for malformed values
 ok 27 - error on modifying repo config without repo
-# passed all 27 test(s)
-1..27
+ok 28 - iteration shows correct origins
+# passed all 28 test(s)
+1..28
+*** t1350-config-hooks-path.sh ***
+ok 1 - set up a pre-commit hook in core.hooksPath
+ok 2 - Check that various forms of specifying core.hooksPath work
+ok 3 - git rev-parse --git-path hooks
+# passed all 3 test(s)
+1..3
 *** t1400-update-ref.sh ***
 ok 1 - setup
 ok 2 - create refs/heads/master
@@ -2154,160 +2281,171 @@
 ok 11 - delete refs/heads/master (by HEAD)
 ok 12 - update-ref does not create reflogs by default
 ok 13 - update-ref creates reflogs with --create-reflog
-ok 14 - create refs/heads/master (by HEAD)
-ok 15 - pack refs
-ok 16 - move refs/heads/master (by HEAD)
-ok 17 - delete refs/heads/master (by HEAD) should remove both packed and loose refs/heads/master
-ok 18 - delete symref without dereference
-ok 19 - delete symref without dereference when the referred ref is packed
-ok 20 - update-ref -d is not confused by self-reference
-ok 21 - update-ref --no-deref -d can delete self-reference
-ok 22 - update-ref --no-deref -d can delete reference to bad ref
-ok 23 - (not) create HEAD with old sha1
-ok 24 - (not) prior created .git/refs/heads/master
-ok 25 - create HEAD
-ok 26 - (not) change HEAD with wrong SHA1
-ok 27 - (not) changed .git/refs/heads/master
-ok 28 - create refs/heads/master (logged by touch)
-ok 29 - update refs/heads/master (logged by touch)
-ok 30 - set refs/heads/master (logged by touch)
-ok 31 - verifying refs/heads/master's log
-ok 32 - enable core.logAllRefUpdates
-ok 33 - create refs/heads/master (logged by config)
-ok 34 - update refs/heads/master (logged by config)
-ok 35 - set refs/heads/master (logged by config)
-ok 36 - verifying refs/heads/master's log
-ok 37 - Query "[email protected]{May 25 2005}" (before history)
-ok 38 - Query [email protected]{2005-05-25} (before history)
-ok 39 - Query "[email protected]{May 26 2005 23:31:59}" (1 second before history)
-ok 40 - Query "[email protected]{May 26 2005 23:32:00}" (exactly history start)
-ok 41 - Query "[email protected]{May 26 2005 23:32:30}" (first non-creation change)
-ok 42 - Query "[email protected]{2005-05-26 23:33:01}" (middle of history with gap)
-ok 43 - Query "[email protected]{2005-05-26 23:38:00}" (middle of history)
-ok 44 - Query "[email protected]{2005-05-26 23:43:00}" (exact end of history)
-ok 45 - Query "[email protected]{2005-05-28}" (past end of history)
-ok 46 - creating initial files
-ok 47 - git commit logged updates
-ok 48 - git cat-file blob master:F (expect OTHER)
-ok 49 - git cat-file blob [email protected]{2005-05-26 23:30}:F (expect TEST)
-ok 50 - git cat-file blob [email protected]{2005-05-26 23:42}:F (expect OTHER)
-ok 51 - stdin test setup
-ok 52 - -z fails without --stdin
-ok 53 - stdin works with no input
-ok 54 - stdin fails on empty line
-ok 55 - stdin fails on only whitespace
-ok 56 - stdin fails on leading whitespace
-ok 57 - stdin fails on unknown command
-ok 58 - stdin fails on unbalanced quotes
-ok 59 - stdin fails on invalid escape
-ok 60 - stdin fails on junk after quoted argument
-ok 61 - stdin fails create with no ref
-ok 62 - stdin fails create with no new value
-ok 63 - stdin fails create with too many arguments
-ok 64 - stdin fails update with no ref
-ok 65 - stdin fails update with no new value
-ok 66 - stdin fails update with too many arguments
-ok 67 - stdin fails delete with no ref
-ok 68 - stdin fails delete with too many arguments
-ok 69 - stdin fails verify with too many arguments
-ok 70 - stdin fails option with unknown name
-ok 71 - stdin fails with duplicate refs
-ok 72 - stdin create ref works
-ok 73 - stdin does not create reflogs by default
-ok 74 - stdin creates reflogs with --create-reflog
-ok 75 - stdin succeeds with quoted argument
-ok 76 - stdin succeeds with escaped character
-ok 77 - stdin update ref creates with zero old value
-ok 78 - stdin update ref creates with empty old value
-ok 79 - stdin create ref works with path with space to blob
-ok 80 - stdin update ref fails with wrong old value
-ok 81 - stdin update ref fails with bad old value
-ok 82 - stdin create ref fails with bad new value
-ok 83 - stdin create ref fails with zero new value
-ok 84 - stdin update ref works with right old value
-ok 85 - stdin delete ref fails with wrong old value
-ok 86 - stdin delete ref fails with zero old value
-ok 87 - stdin update symref works option no-deref
-ok 88 - stdin delete symref works option no-deref
-ok 89 - stdin delete ref works with right old value
-ok 90 - stdin update/create/verify combination works
-ok 91 - stdin verify succeeds for correct value
-ok 92 - stdin verify succeeds for missing reference
-ok 93 - stdin verify treats no value as missing
-ok 94 - stdin verify fails for wrong value
-ok 95 - stdin verify fails for mistaken null value
-ok 96 - stdin verify fails for mistaken empty value
-ok 97 - stdin update refs works with identity updates
-ok 98 - stdin update refs fails with wrong old value
-ok 99 - stdin delete refs works with packed and loose refs
-ok 100 - stdin -z works on empty input
-ok 101 - stdin -z fails on empty line
-ok 102 - stdin -z fails on empty command
-ok 103 - stdin -z fails on only whitespace
-ok 104 - stdin -z fails on leading whitespace
-ok 105 - stdin -z fails on unknown command
-ok 106 - stdin -z fails create with no ref
-ok 107 - stdin -z fails create with no new value
-ok 108 - stdin -z fails create with too many arguments
-ok 109 - stdin -z fails update with no ref
-ok 110 - stdin -z fails update with too few args
-ok 111 - stdin -z emits warning with empty new value
-ok 112 - stdin -z fails update with no new value
-ok 113 - stdin -z fails update with no old value
-ok 114 - stdin -z fails update with too many arguments
-ok 115 - stdin -z fails delete with no ref
-ok 116 - stdin -z fails delete with no old value
-ok 117 - stdin -z fails delete with too many arguments
-ok 118 - stdin -z fails verify with too many arguments
-ok 119 - stdin -z fails verify with no old value
-ok 120 - stdin -z fails option with unknown name
-ok 121 - stdin -z fails with duplicate refs
-ok 122 - stdin -z create ref works
-ok 123 - stdin -z update ref creates with zero old value
-ok 124 - stdin -z update ref creates with empty old value
-ok 125 - stdin -z create ref works with path with space to blob
-ok 126 - stdin -z update ref fails with wrong old value
-ok 127 - stdin -z update ref fails with bad old value
-ok 128 - stdin -z create ref fails when ref exists
-ok 129 - stdin -z create ref fails with bad new value
-ok 130 - stdin -z create ref fails with empty new value
-ok 131 - stdin -z update ref works with right old value
-ok 132 - stdin -z delete ref fails with wrong old value
-ok 133 - stdin -z delete ref fails with zero old value
-ok 134 - stdin -z update symref works option no-deref
-ok 135 - stdin -z delete symref works option no-deref
-ok 136 - stdin -z delete ref works with right old value
-ok 137 - stdin -z update/create/verify combination works
-ok 138 - stdin -z verify succeeds for correct value
-ok 139 - stdin -z verify succeeds for missing reference
-ok 140 - stdin -z verify treats no value as missing
-ok 141 - stdin -z verify fails for wrong value
-ok 142 - stdin -z verify fails for mistaken null value
-ok 143 - stdin -z verify fails for mistaken empty value
-ok 144 - stdin -z update refs works with identity updates
-ok 145 - stdin -z update refs fails with wrong old value
-ok 146 - stdin -z delete refs works with packed and loose refs
-ok 147 - large transaction creating branches does not burst open file limit
-ok 148 - large transaction deleting branches does not burst open file limit
-ok 149 - handle per-worktree refs in refs/bisect
-# passed all 149 test(s)
-1..149
+ok 14 - creates no reflog in bare repository
+ok 15 - core.logAllRefUpdates=true creates reflog in bare repository
+ok 16 - core.logAllRefUpdates=true does not create reflog by default
+ok 17 - core.logAllRefUpdates=always creates reflog by default
+ok 18 - core.logAllRefUpdates=always creates no reflog for ORIG_HEAD
+ok 19 - --no-create-reflog overrides core.logAllRefUpdates=always
+ok 20 - create refs/heads/master (by HEAD)
+ok 21 - pack refs
+ok 22 - move refs/heads/master (by HEAD)
+ok 23 - delete refs/heads/master (by HEAD) should remove both packed and loose refs/heads/master
+ok 24 - delete symref without dereference
+ok 25 - delete symref without dereference when the referred ref is packed
+ok 26 - update-ref -d is not confused by self-reference
+ok 27 - update-ref --no-deref -d can delete self-reference
+ok 28 - update-ref --no-deref -d can delete reference to bad ref
+ok 29 - (not) create HEAD with old sha1
+ok 30 - (not) prior created .git/refs/heads/master
+ok 31 - create HEAD
+ok 32 - (not) change HEAD with wrong SHA1
+ok 33 - (not) changed .git/refs/heads/master
+ok 34 - create refs/heads/master (logged by touch)
+ok 35 - update refs/heads/master (logged by touch)
+ok 36 - set refs/heads/master (logged by touch)
+ok 37 - verifying refs/heads/master's log
+ok 38 - enable core.logAllRefUpdates
+ok 39 - create refs/heads/master (logged by config)
+ok 40 - update refs/heads/master (logged by config)
+ok 41 - set refs/heads/master (logged by config)
+ok 42 - verifying refs/heads/master's log
+ok 43 - Query "[email protected]{May 25 2005}" (before history)
+ok 44 - Query [email protected]{2005-05-25} (before history)
+ok 45 - Query "[email protected]{May 26 2005 23:31:59}" (1 second before history)
+ok 46 - Query "[email protected]{May 26 2005 23:32:00}" (exactly history start)
+ok 47 - Query "[email protected]{May 26 2005 23:32:30}" (first non-creation change)
+ok 48 - Query "[email protected]{2005-05-26 23:33:01}" (middle of history with gap)
+ok 49 - Query "[email protected]{2005-05-26 23:38:00}" (middle of history)
+ok 50 - Query "[email protected]{2005-05-26 23:43:00}" (exact end of history)
+ok 51 - Query "[email protected]{2005-05-28}" (past end of history)
+ok 52 - creating initial files
+ok 53 - git commit logged updates
+ok 54 - git cat-file blob master:F (expect OTHER)
+ok 55 - git cat-file blob [email protected]{2005-05-26 23:30}:F (expect TEST)
+ok 56 - git cat-file blob [email protected]{2005-05-26 23:42}:F (expect OTHER)
+ok 57 - stdin test setup
+ok 58 - -z fails without --stdin
+ok 59 - stdin works with no input
+ok 60 - stdin fails on empty line
+ok 61 - stdin fails on only whitespace
+ok 62 - stdin fails on leading whitespace
+ok 63 - stdin fails on unknown command
+ok 64 - stdin fails on unbalanced quotes
+ok 65 - stdin fails on invalid escape
+ok 66 - stdin fails on junk after quoted argument
+ok 67 - stdin fails create with no ref
+ok 68 - stdin fails create with no new value
+ok 69 - stdin fails create with too many arguments
+ok 70 - stdin fails update with no ref
+ok 71 - stdin fails update with no new value
+ok 72 - stdin fails update with too many arguments
+ok 73 - stdin fails delete with no ref
+ok 74 - stdin fails delete with too many arguments
+ok 75 - stdin fails verify with too many arguments
+ok 76 - stdin fails option with unknown name
+ok 77 - stdin fails with duplicate refs
+ok 78 - stdin create ref works
+ok 79 - stdin does not create reflogs by default
+ok 80 - stdin creates reflogs with --create-reflog
+ok 81 - stdin succeeds with quoted argument
+ok 82 - stdin succeeds with escaped character
+ok 83 - stdin update ref creates with zero old value
+ok 84 - stdin update ref creates with empty old value
+ok 85 - stdin create ref works with path with space to blob
+ok 86 - stdin update ref fails with wrong old value
+ok 87 - stdin update ref fails with bad old value
+ok 88 - stdin create ref fails with bad new value
+ok 89 - stdin create ref fails with zero new value
+ok 90 - stdin update ref works with right old value
+ok 91 - stdin delete ref fails with wrong old value
+ok 92 - stdin delete ref fails with zero old value
+ok 93 - stdin update symref works option no-deref
+ok 94 - stdin delete symref works option no-deref
+ok 95 - stdin delete ref works with right old value
+ok 96 - stdin update/create/verify combination works
+ok 97 - stdin verify succeeds for correct value
+ok 98 - stdin verify succeeds for missing reference
+ok 99 - stdin verify treats no value as missing
+ok 100 - stdin verify fails for wrong value
+ok 101 - stdin verify fails for mistaken null value
+ok 102 - stdin verify fails for mistaken empty value
+ok 103 - stdin update refs works with identity updates
+ok 104 - stdin update refs fails with wrong old value
+ok 105 - stdin delete refs works with packed and loose refs
+ok 106 - stdin -z works on empty input
+ok 107 - stdin -z fails on empty line
+ok 108 - stdin -z fails on empty command
+ok 109 - stdin -z fails on only whitespace
+ok 110 - stdin -z fails on leading whitespace
+ok 111 - stdin -z fails on unknown command
+ok 112 - stdin -z fails create with no ref
+ok 113 - stdin -z fails create with no new value
+ok 114 - stdin -z fails create with too many arguments
+ok 115 - stdin -z fails update with no ref
+ok 116 - stdin -z fails update with too few args
+ok 117 - stdin -z emits warning with empty new value
+ok 118 - stdin -z fails update with no new value
+ok 119 - stdin -z fails update with no old value
+ok 120 - stdin -z fails update with too many arguments
+ok 121 - stdin -z fails delete with no ref
+ok 122 - stdin -z fails delete with no old value
+ok 123 - stdin -z fails delete with too many arguments
+ok 124 - stdin -z fails verify with too many arguments
+ok 125 - stdin -z fails verify with no old value
+ok 126 - stdin -z fails option with unknown name
+ok 127 - stdin -z fails with duplicate refs
+ok 128 - stdin -z create ref works
+ok 129 - stdin -z update ref creates with zero old value
+ok 130 - stdin -z update ref creates with empty old value
+ok 131 - stdin -z create ref works with path with space to blob
+ok 132 - stdin -z update ref fails with wrong old value
+ok 133 - stdin -z update ref fails with bad old value
+ok 134 - stdin -z create ref fails when ref exists
+ok 135 - stdin -z create ref fails with bad new value
+ok 136 - stdin -z create ref fails with empty new value
+ok 137 - stdin -z update ref works with right old value
+ok 138 - stdin -z delete ref fails with wrong old value
+ok 139 - stdin -z delete ref fails with zero old value
+ok 140 - stdin -z update symref works option no-deref
+ok 141 - stdin -z delete symref works option no-deref
+ok 142 - stdin -z delete ref works with right old value
+ok 143 - stdin -z update/create/verify combination works
+ok 144 - stdin -z verify succeeds for correct value
+ok 145 - stdin -z verify succeeds for missing reference
+ok 146 - stdin -z verify treats no value as missing
+ok 147 - stdin -z verify fails for wrong value
+ok 148 - stdin -z verify fails for mistaken null value
+ok 149 - stdin -z verify fails for mistaken empty value
+ok 150 - stdin -z update refs works with identity updates
+ok 151 - stdin -z update refs fails with wrong old value
+ok 152 - stdin -z delete refs works with packed and loose refs
+ok 153 - fails with duplicate HEAD update
+ok 154 - fails with duplicate ref update via symref
+ok 155 - large transaction creating branches does not burst open file limit
+ok 156 - large transaction deleting branches does not burst open file limit
+ok 157 - handle per-worktree refs in refs/bisect
+# passed all 157 test(s)
+1..157
 *** t1401-symbolic-ref.sh ***
 ok 1 - symbolic-ref writes HEAD
 ok 2 - symbolic-ref reads HEAD
 ok 3 - symbolic-ref refuses non-ref for HEAD
 ok 4 - symbolic-ref refuses bare sha1
-ok 5 - symbolic-ref deletes HEAD
-ok 6 - symbolic-ref deletes dangling HEAD
-ok 7 - symbolic-ref fails to delete missing FOO
-ok 8 - symbolic-ref fails to delete real ref
-ok 9 - create large ref name
-ok 10 - symbolic-ref can point to large ref name
-ok 11 - we can parse long symbolic ref
-ok 12 - symbolic-ref reports failure in exit code
-ok 13 - symbolic-ref writes reflog entry
-# passed all 13 test(s)
-1..13
+ok 5 - HEAD cannot be removed
+ok 6 - symbolic-ref can be deleted
+ok 7 - symbolic-ref can delete dangling symref
+ok 8 - symbolic-ref fails to delete missing FOO
+ok 9 - symbolic-ref fails to delete real ref
+ok 10 - create large ref name
+ok 11 - symbolic-ref can point to large ref name
+ok 12 - we can parse long symbolic ref
+ok 13 - symbolic-ref reports failure in exit code
+ok 14 - symbolic-ref writes reflog entry
+ok 15 - symbolic-ref does not create ref d/f conflicts
+ok 16 - symbolic-ref handles existing pointer to invalid name
+# passed all 16 test(s)
+1..16
 *** t1402-check-ref-format.sh ***
 ok 1 - ref name '' is invalid
 ok 2 - ref name '/' is invalid
@@ -2415,9 +2553,11 @@
 ok 5 - show-ref --verify -q
 ok 6 - show-ref -d
 ok 7 - show-ref --heads, --tags, --head, pattern
-# passed all 7 test(s)
-1..7
-*** t1404-update-ref-df-conflicts.sh ***
+ok 8 - show-ref --verify HEAD
+ok 9 - show-ref --verify with dangling ref
+# passed all 9 test(s)
+1..9
+*** t1404-update-ref-errors.sh ***
 ok 1 - setup
 ok 2 - existing loose ref is a simple prefix of new
 ok 3 - existing packed ref is a simple prefix of new
@@ -2428,8 +2568,32 @@
 ok 8 - new ref is a deeper prefix of existing loose
 ok 9 - new ref is a deeper prefix of existing packed
 ok 10 - one new ref is a simple prefix of another
-# passed all 10 test(s)
-1..10
+ok 11 - empty directory should not fool rev-parse
+ok 12 - empty directory should not fool for-each-ref
+ok 13 - empty directory should not fool create
+ok 14 - empty directory should not fool verify
+ok 15 - empty directory should not fool 1-arg update
+ok 16 - empty directory should not fool 2-arg update
+ok 17 - empty directory should not fool 0-arg delete
+ok 18 - empty directory should not fool 1-arg delete
+ok 19 - missing old value blocks update
+ok 20 - incorrect old value blocks update
+ok 21 - existing old value blocks create
+ok 22 - incorrect old value blocks delete
+ok 23 - missing old value blocks indirect update
+ok 24 - incorrect old value blocks indirect update
+ok 25 - existing old value blocks indirect create
+ok 26 - incorrect old value blocks indirect delete
+ok 27 - missing old value blocks indirect no-deref update
+ok 28 - incorrect old value blocks indirect no-deref update
+ok 29 - existing old value blocks indirect no-deref create
+ok 30 - incorrect old value blocks indirect no-deref delete
+ok 31 - non-empty directory blocks create
+ok 32 - broken reference blocks create
+ok 33 - non-empty directory blocks indirect create
+ok 34 - broken reference blocks indirect create
+# passed all 34 test(s)
+1..34
 *** t1410-reflog.sh ***
 ok 1 - setup
 ok 2 - rewind
@@ -2449,9 +2613,11 @@
 ok 16 - parsing reverse reflogs at BUFSIZ boundaries
 ok 17 - no segfaults for reflog containing non-commit sha1s
 not ok 18 - reflog with non-commit entries displays all entries # TODO known breakage
+ok 19 - reflog expire operates on symref not referrent
+ok 20 - continue walking past root commits
 # still have 1 known breakage(s)
-# passed all remaining 17 test(s)
-1..18
+# passed all remaining 19 test(s)
+1..20
 *** t1411-reflog-show.sh ***
 ok 1 - setup
 ok 2 - log -g shows reflog headers
@@ -2510,19 +2676,29 @@
 ok 13 - push cannot create a badly named ref
 not ok 14 - push --mirror can delete badly named ref # TODO known breakage
 ok 15 - rev-parse skips symref pointing to broken name
-ok 16 - update-ref --no-deref -d can delete reference to broken name
+ok 16 - for-each-ref emits warnings for broken names
 ok 17 - update-ref -d can delete broken name
-ok 18 - update-ref -d cannot delete non-ref in .git dir
-ok 19 - update-ref -d cannot delete absolute path
-ok 20 - update-ref --stdin fails create with bad ref name
-ok 21 - update-ref --stdin fails update with bad ref name
-ok 22 - update-ref --stdin fails delete with bad ref name
-ok 23 - update-ref --stdin -z fails create with bad ref name
-ok 24 - update-ref --stdin -z fails update with bad ref name
-ok 25 - update-ref --stdin -z fails delete with bad ref name
+ok 18 - branch -d can delete broken name
+ok 19 - update-ref --no-deref -d can delete symref to broken name
+ok 20 - branch -d can delete symref to broken name
+ok 21 - update-ref --no-deref -d can delete dangling symref to broken name
+ok 22 - branch -d can delete dangling symref to broken name
+ok 23 - update-ref -d can delete broken name through symref
+ok 24 - update-ref --no-deref -d can delete symref with broken name
+ok 25 - branch -d can delete symref with broken name
+ok 26 - update-ref --no-deref -d can delete dangling symref with broken name
+ok 27 - branch -d can delete dangling symref with broken name
+ok 28 - update-ref -d cannot delete non-ref in .git dir
+ok 29 - update-ref -d cannot delete absolute path
+ok 30 - update-ref --stdin fails create with bad ref name
+ok 31 - update-ref --stdin fails update with bad ref name
+ok 32 - update-ref --stdin fails delete with bad ref name
+ok 33 - update-ref --stdin -z fails create with bad ref name
+ok 34 - update-ref --stdin -z fails update with bad ref name
+ok 35 - update-ref --stdin -z fails delete with bad ref name
 # still have 2 known breakage(s)
-# passed all remaining 23 test(s)
-1..25
+# passed all remaining 33 test(s)
+1..35
 *** t1450-fsck.sh ***
 ok 1 - setup
 ok 2 - loose objects borrowed from alternate are not missing
@@ -2539,102 +2715,129 @@
 ok 13 - > in name is reported
 ok 14 - integer overflow in timestamps is reported
 ok 15 - commit with NUL in header
-ok 16 - malformatted tree object
-ok 17 - tag pointing to nonexistent
-ok 18 - tag pointing to something else than its type
-ok 19 - tag with incorrect tag name & missing tagger
-ok 20 - tag with bad tagger
-ok 21 - tag with NUL in header
-ok 22 - cleaned up
-ok 23 - rev-list --verify-objects
-ok 24 - rev-list --verify-objects with bad sha1
-ok 25 - force fsck to ignore double author
-ok 26 - fsck notices blob entry pointing to null sha1
-ok 27 - fsck notices submodule entry pointing to null sha1
-ok 28 - fsck notices . as blob
-ok 29 - fsck notices . as tree
-ok 30 - fsck notices .. as blob
-ok 31 - fsck notices .. as tree
-ok 32 - fsck notices .git as blob
-ok 33 - fsck notices .git as tree
-ok 34 - fsck notices .GIT as blob
-ok 35 - fsck notices .GIT as tree
-ok 36 - fsck notices .gI{u200c}T as blob
-ok 37 - fsck notices .gI{u200c}T as tree
-ok 38 - fsck notices .Git as blob
-ok 39 - fsck notices .Git as tree
-ok 40 - fsck notices git~1 as blob
-ok 41 - fsck notices git~1 as tree
-ok 42 - fsck notices .git. as blob
-ok 43 - fsck notices .git. as tree
-ok 44 - fsck notices .\.GIT\foobar as blob
-ok 45 - fsck notices .\.GIT\foobar as tree
-ok 46 - fsck notices .git\foobar as blob
-ok 47 - fsck notices .git\foobar as tree
-ok 48 - fsck allows .Ňit
-ok 49 - fsck notices missing blob
-ok 50 - fsck notices missing subtree
-ok 51 - fsck notices missing root tree
-ok 52 - fsck notices missing parent
-ok 53 - fsck notices missing tagged object
-ok 54 - fsck notices ref pointing to missing commit
-ok 55 - fsck notices ref pointing to missing tag
-ok 56 - fsck --connectivity-only
-# passed all 56 test(s)
-1..56
+ok 16 - tree object with duplicate entries
+ok 17 - unparseable tree object
+ok 18 - tag pointing to nonexistent
+ok 19 - tag pointing to something else than its type
+ok 20 - tag with incorrect tag name & missing tagger
+ok 21 - tag with bad tagger
+ok 22 - tag with NUL in header
+ok 23 - cleaned up
+ok 24 - rev-list --verify-objects
+ok 25 - rev-list --verify-objects with bad sha1
+ok 26 - force fsck to ignore double author
+ok 27 - fsck notices blob entry pointing to null sha1
+ok 28 - fsck notices submodule entry pointing to null sha1
+ok 29 - fsck notices . as blob
+ok 30 - fsck notices . as tree
+ok 31 - fsck notices .. as blob
+ok 32 - fsck notices .. as tree
+ok 33 - fsck notices .git as blob
+ok 34 - fsck notices .git as tree
+ok 35 - fsck notices .GIT as blob
+ok 36 - fsck notices .GIT as tree
+ok 37 - fsck notices .gI{u200c}T as blob
+ok 38 - fsck notices .gI{u200c}T as tree
+ok 39 - fsck notices .Git as blob
+ok 40 - fsck notices .Git as tree
+ok 41 - fsck notices git~1 as blob
+ok 42 - fsck notices git~1 as tree
+ok 43 - fsck notices .git. as blob
+ok 44 - fsck notices .git. as tree
+ok 45 - fsck notices .\.GIT\foobar as blob
+ok 46 - fsck notices .\.GIT\foobar as tree
+ok 47 - fsck notices .git\foobar as blob
+ok 48 - fsck notices .git\foobar as tree
+ok 49 - fsck allows .Ňit
+ok 50 - NUL in commit
+ok 51 - fsck notices missing blob
+ok 52 - fsck notices missing subtree
+ok 53 - fsck notices missing root tree
+ok 54 - fsck notices missing parent
+ok 55 - fsck notices missing tagged object
+ok 56 - fsck notices ref pointing to missing commit
+ok 57 - fsck notices ref pointing to missing tag
+ok 58 - fsck --connectivity-only
+ok 59 - fsck --connectivity-only with explicit head
+not ok 60 - fsck --name-objects
+#	
+#		rm -rf name-objects &&
+#		git init name-objects &&
+#		(
+#			cd name-objects &&
+#			test_commit julius caesar.t &&
+#			test_commit augustus &&
+#			test_commit caesar &&
+#			remove_object $(git rev-parse julius:caesar.t) &&
+#			test_must_fail git fsck --name-objects >out &&
+#			tree=$(git rev-parse --verify julius:) &&
+#			grep "$tree (\(refs/heads/master\|HEAD\)@{[0-9]*}:" out
+#		)
+#	
+ok 61 - alternate objects are correctly blamed
+ok 62 - fsck errors in packed objects
+ok 63 - fsck finds problems in duplicate loose objects
+ok 64 - fsck detects trailing loose garbage (commit)
+ok 65 - fsck detects trailing loose garbage (blob)
+ok 66 - fsck notices dangling objects
+ok 67 - fsck $name notices bogus $name
+ok 68 - bogus head does not fallback to all heads
+# failed 1 among 68 test(s)
+1..68
 *** t1500-rev-parse.sh ***
-ok 1 - toplevel: is-bare-repository
-ok 2 - toplevel: is-inside-git-dir
-ok 3 - toplevel: is-inside-work-tree
-ok 4 - toplevel: prefix
-ok 5 - toplevel: git-dir
-ok 6 - .git/: is-bare-repository
-ok 7 - .git/: is-inside-git-dir
-ok 8 - .git/: is-inside-work-tree
-ok 9 - .git/: prefix
-ok 10 - .git/: git-dir
-ok 11 - .git/objects/: is-bare-repository
-ok 12 - .git/objects/: is-inside-git-dir
-ok 13 - .git/objects/: is-inside-work-tree
-ok 14 - .git/objects/: prefix
-ok 15 - .git/objects/: git-dir
-ok 16 - subdirectory: is-bare-repository
-ok 17 - subdirectory: is-inside-git-dir
-ok 18 - subdirectory: is-inside-work-tree
-ok 19 - subdirectory: prefix
-ok 20 - subdirectory: git-dir
-ok 21 - core.bare = true: is-bare-repository
-ok 22 - core.bare = true: is-inside-git-dir
-ok 23 - core.bare = true: is-inside-work-tree
-ok 24 - core.bare undefined: is-bare-repository
-ok 25 - core.bare undefined: is-inside-git-dir
-ok 26 - core.bare undefined: is-inside-work-tree
-ok 27 - GIT_DIR=../.git, core.bare = false: is-bare-repository
-ok 28 - GIT_DIR=../.git, core.bare = false: is-inside-git-dir
-ok 29 - GIT_DIR=../.git, core.bare = false: is-inside-work-tree
-ok 30 - GIT_DIR=../.git, core.bare = false: prefix
-ok 31 - GIT_DIR=../.git, core.bare = true: is-bare-repository
-ok 32 - GIT_DIR=../.git, core.bare = true: is-inside-git-dir
-ok 33 - GIT_DIR=../.git, core.bare = true: is-inside-work-tree
-ok 34 - GIT_DIR=../.git, core.bare = true: prefix
-ok 35 - GIT_DIR=../.git, core.bare undefined: is-bare-repository
-ok 36 - GIT_DIR=../.git, core.bare undefined: is-inside-git-dir
-ok 37 - GIT_DIR=../.git, core.bare undefined: is-inside-work-tree
-ok 38 - GIT_DIR=../.git, core.bare undefined: prefix
-ok 39 - GIT_DIR=../repo.git, core.bare = false: is-bare-repository
-ok 40 - GIT_DIR=../repo.git, core.bare = false: is-inside-git-dir
-ok 41 - GIT_DIR=../repo.git, core.bare = false: is-inside-work-tree
-ok 42 - GIT_DIR=../repo.git, core.bare = false: prefix
-ok 43 - GIT_DIR=../repo.git, core.bare = true: is-bare-repository
-ok 44 - GIT_DIR=../repo.git, core.bare = true: is-inside-git-dir
-ok 45 - GIT_DIR=../repo.git, core.bare = true: is-inside-work-tree
-ok 46 - GIT_DIR=../repo.git, core.bare = true: prefix
-ok 47 - GIT_DIR=../repo.git, core.bare undefined: is-bare-repository
-ok 48 - GIT_DIR=../repo.git, core.bare undefined: is-inside-git-dir
-ok 49 - GIT_DIR=../repo.git, core.bare undefined: is-inside-work-tree
-ok 50 - GIT_DIR=../repo.git, core.bare undefined: prefix
-# passed all 50 test(s)
-1..50
+ok 1 - setup
+ok 2 - toplevel: --is-bare-repository
+ok 3 - toplevel: --is-inside-git-dir
+ok 4 - toplevel: --is-inside-work-tree
+ok 5 - toplevel: --show-prefix
+ok 6 - toplevel: --git-dir
+ok 7 - .git/: --is-bare-repository
+ok 8 - .git/: --is-inside-git-dir
+ok 9 - .git/: --is-inside-work-tree
+ok 10 - .git/: --show-prefix
+ok 11 - .git/: --git-dir
+ok 12 - .git/objects/: --is-bare-repository
+ok 13 - .git/objects/: --is-inside-git-dir
+ok 14 - .git/objects/: --is-inside-work-tree
+ok 15 - .git/objects/: --show-prefix
+ok 16 - .git/objects/: --git-dir
+ok 17 - subdirectory: --is-bare-repository
+ok 18 - subdirectory: --is-inside-git-dir
+ok 19 - subdirectory: --is-inside-work-tree
+ok 20 - subdirectory: --show-prefix
+ok 21 - subdirectory: --git-dir
+ok 22 - core.bare = true: --is-bare-repository
+ok 23 - core.bare = true: --is-inside-git-dir
+ok 24 - core.bare = true: --is-inside-work-tree
+ok 25 - core.bare undefined: --is-bare-repository
+ok 26 - core.bare undefined: --is-inside-git-dir
+ok 27 - core.bare undefined: --is-inside-work-tree
+ok 28 - GIT_DIR=../.git, core.bare = false: --is-bare-repository
+ok 29 - GIT_DIR=../.git, core.bare = false: --is-inside-git-dir
+ok 30 - GIT_DIR=../.git, core.bare = false: --is-inside-work-tree
+ok 31 - GIT_DIR=../.git, core.bare = false: --show-prefix
+ok 32 - GIT_DIR=../.git, core.bare = true: --is-bare-repository
+ok 33 - GIT_DIR=../.git, core.bare = true: --is-inside-git-dir
+ok 34 - GIT_DIR=../.git, core.bare = true: --is-inside-work-tree
+ok 35 - GIT_DIR=../.git, core.bare = true: --show-prefix
+ok 36 - GIT_DIR=../.git, core.bare undefined: --is-bare-repository
+ok 37 - GIT_DIR=../.git, core.bare undefined: --is-inside-git-dir
+ok 38 - GIT_DIR=../.git, core.bare undefined: --is-inside-work-tree
+ok 39 - GIT_DIR=../.git, core.bare undefined: --show-prefix
+ok 40 - GIT_DIR=../repo.git, core.bare = false: --is-bare-repository
+ok 41 - GIT_DIR=../repo.git, core.bare = false: --is-inside-git-dir
+ok 42 - GIT_DIR=../repo.git, core.bare = false: --is-inside-work-tree
+ok 43 - GIT_DIR=../repo.git, core.bare = false: --show-prefix
+ok 44 - GIT_DIR=../repo.git, core.bare = true: --is-bare-repository
+ok 45 - GIT_DIR=../repo.git, core.bare = true: --is-inside-git-dir
+ok 46 - GIT_DIR=../repo.git, core.bare = true: --is-inside-work-tree
+ok 47 - GIT_DIR=../repo.git, core.bare = true: --show-prefix
+ok 48 - GIT_DIR=../repo.git, core.bare undefined: --is-bare-repository
+ok 49 - GIT_DIR=../repo.git, core.bare undefined: --is-inside-git-dir
+ok 50 - GIT_DIR=../repo.git, core.bare undefined: --is-inside-work-tree
+ok 51 - GIT_DIR=../repo.git, core.bare undefined: --show-prefix
+# passed all 51 test(s)
+1..51
 *** t1501-work-tree.sh ***
 ok 1 - setup
 ok 2 - setup: helper for testing rev-parse
@@ -2710,8 +2913,9 @@
 ok 8 - no stdout output on error
 ok 9 - use --default
 ok 10 - [email protected]{n} for various n
-# passed all 10 test(s)
-1..10
+ok 11 - ref resolution not confused by broken symlinks
+# passed all 11 test(s)
+1..11
 *** t1504-ceiling-dirs.sh ***
 ok 1 - no_ceil
 ok 2 - ceil_empty
@@ -2786,14 +2990,13 @@
 ok 14 - relative path not found
 ok 15 - relative path outside worktree
 ok 16 - relative path when cwd is outside worktree
-ok 17 - relative path when startup_info is NULL
-ok 18 - <commit>:file correctly diagnosed after a pathname
-ok 19 - dotdot is not an empty set
-ok 20 - arg before dashdash must be a revision (missing)
-ok 21 - arg before dashdash must be a revision (file)
-ok 22 - arg before dashdash must be a revision (ambiguous)
-# passed all 22 test(s)
-1..22
+ok 17 - <commit>:file correctly diagnosed after a pathname
+ok 18 - dotdot is not an empty set
+ok 19 - arg before dashdash must be a revision (missing)
+ok 20 - arg before dashdash must be a revision (file)
+ok 21 - arg before dashdash must be a revision (ambiguous)
+# passed all 21 test(s)
+1..21
 *** t1507-rev-parse-upstream.sh ***
 ok 1 - setup
 ok 2 - @{upstream} resolves to correct full name
@@ -2985,8 +3188,16 @@
 ok 7 - ref^{/.}
 ok 8 - ref^{/non-existent}
 ok 9 - ref^{/Initial}
-# passed all 9 test(s)
-1..9
+ok 10 - ref^{/!Exp}
+ok 11 - ref^{/!}
+ok 12 - ref^{/!!Exp}
+ok 13 - ref^{/!-}
+ok 14 - ref^{/!-.}
+ok 15 - ref^{/!-non-existent}
+ok 16 - ref^{/!-Changed}
+ok 17 - ref^{/!-!Exp}
+# passed all 17 test(s)
+1..17
 *** t1512-rev-parse-disambiguation.sh ***
 ok 1 - blob and tree
 ok 2 - warn ambiguity when no candidate matches type hint
@@ -3008,12 +3219,22 @@
 not ok 18 - parse describe name taking advantage of generation # TODO known breakage
 ok 19 - parse describe name not ignoring ambiguity
 ok 20 - ambiguous commit-ish
-ok 21 - rev-parse --disambiguate
-ok 22 - ambiguous 40-hex ref
-ok 23 - ambiguous short sha1 ref
+ok 21 - ambiguous tags peel to treeish
+ok 22 - rev-parse --disambiguate
+ok 23 - rev-parse --disambiguate drops duplicates
+ok 24 - ambiguous 40-hex ref
+ok 25 - ambiguous short sha1 ref
+ok 26 - ambiguity errors are not repeated (raw)
+ok 27 - ambiguity errors are not repeated (treeish)
+ok 28 - ambiguity errors are not repeated (peel)
+ok 29 - ambiguity hints
+ok 30 - ambiguity hints respect type
+ok 31 - failed type-selector still shows hint
+ok 32 - core.disambiguate config can prefer types
+ok 33 - core.disambiguate does not override context
 # still have 3 known breakage(s)
-# passed all remaining 20 test(s)
-1..23
+# passed all remaining 30 test(s)
+1..33
 *** t1513-rev-parse-prefix.sh ***
 ok 1 - setup
 ok 2 - empty prefix -- file
@@ -3037,8 +3258,16 @@
 ok 6 - @{push} with default=matching
 ok 7 - @{push} with pushremote defined
 ok 8 - @{push} with push refspecs
-# passed all 8 test(s)
-1..8
+ok 9 - resolving @{push} fails with a detached HEAD
+# passed all 9 test(s)
+1..9
+*** t1515-rev-parse-outside-repo.sh ***
+ok 1 - set up non-repo directory
+ok 2 - rev-parse --sq-quote
+ok 3 - rev-parse --local-env-vars
+ok 4 - rev-parse --resolve-git-dir
+# passed all 4 test(s)
+1..4
 *** t1600-index.sh ***
 ok 1 - setup
 ok 2 - bogus GIT_INDEX_VERSION issues warning
@@ -3167,16 +3396,24 @@
 ok 5 - non ambiguous call
 ok 6 - allow the most common case
 ok 7 - check ambiguity
-ok 8 - disambiguate checking out from a tree-ish
-ok 9 - accurate error message with more than one ref
-# passed all 9 test(s)
-1..9
+ok 8 - check ambiguity in subdir
+ok 9 - disambiguate checking out from a tree-ish
+ok 10 - accurate error message with more than one ref
+# passed all 10 test(s)
+1..10
 *** t2011-checkout-invalid-head.sh ***
 ok 1 - setup
 ok 2 - checkout should not start branch from a tree
 ok 3 - checkout master from invalid HEAD
-# passed all 3 test(s)
-1..3
+ok 4 - checkout notices failure to lock HEAD
+ok 5 - create ref directory/file conflict scenario
+ok 6 - checkout away from d/f HEAD (unpacked, to branch)
+ok 7 - checkout away from d/f HEAD (unpacked, to detached)
+ok 8 - pack refs
+ok 9 - checkout away from d/f HEAD (packed, to branch)
+ok 10 - checkout away from d/f HEAD (packed, to detached)
+# passed all 10 test(s)
+1..10
 *** t2012-checkout-last.sh ***
 ok 1 - setup
 ok 2 - "checkout -" does not work initially
@@ -3344,8 +3581,9 @@
 ok 19 - checkout does not warn leaving reachable commit
 ok 20 - checkout does not warn leaving reachable commit
 ok 21 - tracking count is accurate after orphan check
-# passed all 21 test(s)
-1..21
+ok 22 - no advice given for explicit detached head state
+# passed all 22 test(s)
+1..22
 *** t2021-checkout-overwrite.sh ***
 ok 1 - setup
 ok 2 - create a commit where dir a/b changed to file
@@ -3382,39 +3620,55 @@
 ok 10 - checkout of branch from a single remote succeeds #3
 ok 11 - checkout of branch from a single remote succeeds #4
 ok 12 - checkout of branch with a file having the same name fails
-ok 13 - checkout <branch> -- succeeds, even if a file with the same name exists
-ok 14 - loosely defined local base branch is reported correctly
-# passed all 14 test(s)
-1..14
+ok 13 - checkout of branch with a file in subdir having the same name fails
+ok 14 - checkout <branch> -- succeeds, even if a file with the same name exists
+ok 15 - loosely defined local base branch is reported correctly
+# passed all 15 test(s)
+1..15
 *** t2025-worktree-add.sh ***
 ok 1 - setup
 ok 2 - "add" an existing worktree
 ok 3 - "add" an existing empty worktree
-ok 4 - "add" refuses to checkout locked branch
-ok 5 - checking out paths not complaining about linked checkouts
-ok 6 - "add" worktree
-ok 7 - "add" worktree from a subdir
-ok 8 - "add" from a linked checkout
-ok 9 - "add" worktree creating new branch
-ok 10 - die the same branch is already checked out
-ok 11 - die the same branch is already checked out (symlink)
-ok 12 - not die the same branch is already checked out
-ok 13 - not die on re-checking out current branch
-ok 14 - "add" from a bare repo
-ok 15 - checkout from a bare repo without "add"
-ok 16 - checkout with grafts
-ok 17 - "add" from relative HEAD
-ok 18 - "add -b" with <branch> omitted
-ok 19 - "add --detach" with <branch> omitted
-ok 20 - "add" with <branch> omitted
-ok 21 - "add" auto-vivify does not clobber existing branch
-ok 22 - "add" no auto-vivify with --detach and <branch> omitted
-ok 23 - "add" -b/-B mutually exclusive
-ok 24 - "add" -b/--detach mutually exclusive
-ok 25 - "add" -B/--detach mutually exclusive
-ok 26 - local clone from linked checkout
-# passed all 26 test(s)
-1..26
+ok 4 - "add" using shorthand - fails when no previous branch
+ok 5 - "add" using - shorthand
+ok 6 - "add" refuses to checkout locked branch
+ok 7 - checking out paths not complaining about linked checkouts
+ok 8 - "add" worktree
+ok 9 - "add" worktree from a subdir
+ok 10 - "add" from a linked checkout
+ok 11 - "add" worktree creating new branch
+ok 12 - die the same branch is already checked out
+ok 13 - die the same branch is already checked out (symlink)
+ok 14 - not die the same branch is already checked out
+ok 15 - not die on re-checking out current branch
+ok 16 - "add" from a bare repo
+ok 17 - checkout from a bare repo without "add"
+ok 18 - "add" default branch of a bare repo
+ok 19 - checkout with grafts
+ok 20 - "add" from relative HEAD
+ok 21 - "add -b" with <branch> omitted
+ok 22 - "add --detach" with <branch> omitted
+ok 23 - "add" with <branch> omitted
+ok 24 - "add" auto-vivify does not clobber existing branch
+ok 25 - "add" no auto-vivify with --detach and <branch> omitted
+ok 26 - "add" -b/-B mutually exclusive
+ok 27 - "add" -b/--detach mutually exclusive
+ok 28 - "add" -B/--detach mutually exclusive
+ok 29 - "add -B" fails if the branch is checked out
+ok 30 - add -B
+ok 31 - local clone from linked checkout
+ok 32 - "add" worktree with --no-checkout
+ok 33 - "add" worktree with --checkout
+ok 34 - put a worktree under rebase
+ok 35 - add a worktree, checking out a rebased branch
+ok 36 - checking out a rebased branch from another worktree
+ok 37 - not allow to delete a branch under rebase
+ok 38 - rename a branch under rebase not allowed
+ok 39 - check out from current worktree branch ok
+ok 40 - checkout a branch under bisect
+ok 41 - rename a branch under bisect not allowed
+# passed all 41 test(s)
+1..41
 *** t2026-worktree-prune.sh ***
 ok 1 - initialize
 ok 2 - worktree prune on normal repo
@@ -3439,8 +3693,22 @@
 ok 8 - "list" all worktrees --porcelain from bare main
 ok 9 - "list" all worktrees from linked with a bare main
 ok 10 - bare repo cleanup
-# passed all 10 test(s)
-1..10
+ok 11 - broken main worktree still at the top
+ok 12 - linked worktrees are sorted
+# passed all 12 test(s)
+1..12
+*** t2028-worktree-move.sh ***
+ok 1 - setup
+ok 2 - lock main worktree
+ok 3 - lock linked worktree
+ok 4 - lock linked worktree from another worktree
+ok 5 - lock worktree twice
+ok 6 - lock worktree twice (from the locked worktree)
+ok 7 - unlock main worktree
+ok 8 - unlock linked worktree
+ok 9 - unlock worktree twice
+# passed all 9 test(s)
+1..9
 *** t2030-unresolve-info.sh ***
 ok 1 - setup
 ok 2 - add records switch clears
@@ -3524,8 +3792,9 @@
 ok 6 - --cacheinfo does not accept gitlink null sha1
 ok 7 - --cacheinfo mode,sha1,path (new syntax)
 ok 8 - .lock files cleaned up
-# passed all 8 test(s)
-1..8
+ok 9 - --chmod=+x and chmod=-x in the same argument list
+# passed all 9 test(s)
+1..9
 *** t2200-add-update.sh ***
 ok 1 - setup
 ok 2 - update
@@ -3563,15 +3832,20 @@
 1..3
 *** t2203-add-intent.sh ***
 ok 1 - intent to add
-ok 2 - check result of "add -N"
-ok 3 - intent to add is just an ordinary empty blob
-ok 4 - intent to add does not clobber existing paths
-ok 5 - i-t-a entry is simply ignored
-ok 6 - can commit with an unrelated i-t-a entry in index
-ok 7 - can "commit -a" with an i-t-a entry
-ok 8 - cache-tree invalidates i-t-a paths
-# passed all 8 test(s)
-1..8
+ok 2 - git status
+ok 3 - check result of "add -N"
+ok 4 - intent to add is just an ordinary empty blob
+ok 5 - intent to add does not clobber existing paths
+ok 6 - i-t-a entry is simply ignored
+ok 7 - can commit with an unrelated i-t-a entry in index
+ok 8 - can "commit -a" with an i-t-a entry
+ok 9 - cache-tree invalidates i-t-a paths
+ok 10 - cache-tree does not ignore dir that has i-t-a entries
+ok 11 - cache-tree does skip dir that becomes empty
+ok 12 - commit: ita entries ignored in empty intial commit check
+ok 13 - commit: ita entries ignored in empty commit check
+# passed all 13 test(s)
+1..13
 *** t2204-add-ignored.sh ***
 ok 1 - setup
 ok 2 - no complaints for unignored file
@@ -3709,6 +3983,27 @@
 ok 3 - overly-long path does not replace another by mistake
 # passed all 3 test(s)
 1..3
+*** t3007-ls-files-recurse-submodules.sh ***
+ok 1 - setup directory structure and submodules
+ok 2 - ls-files correctly outputs files in submodule
+ok 3 - ls-files correctly outputs files in submodule with -z
+ok 4 - ls-files does not output files not added to a repo
+ok 5 - ls-files recurses more than 1 level
+ok 6 - --recurse-submodules and pathspecs setup
+ok 7 - --recurse-submodules and pathspecs
+ok 8 - --recurse-submodules and pathspecs
+ok 9 - --recurse-submodules and pathspecs
+ok 10 - --recurse-submodules and pathspecs
+ok 11 - --recurse-submodules and pathspecs
+ok 12 - --recurse-submodules does not support --error-unmatch
+ok 13 - --recurse-submodules and --deleted are incompatible
+ok 14 - --recurse-submodules and --modified are incompatible
+ok 15 - --recurse-submodules and --others are incompatible
+ok 16 - --recurse-submodules and --stage are incompatible
+ok 17 - --recurse-submodules and --killed are incompatible
+ok 18 - --recurse-submodules and --unmerged are incompatible
+# passed all 18 test(s)
+1..18
 *** t3010-ls-files-killed-modified.sh ***
 ok 1 - git update-index --add to add various paths.
 ok 2 - git ls-files -k to show killed files.
@@ -3754,20 +4049,21 @@
 ok 27 - merge-recursive w/ empty work tree - ours has rename
 ok 28 - merge-recursive w/ empty work tree - theirs has rename
 ok 29 - merge removes empty directories
-not ok 30 - merge-recursive simple w/submodule # TODO known breakage
-not ok 31 - merge-recursive simple w/submodule result # TODO known breakage
+ok 30 - merge-recursive simple w/submodule
+ok 31 - merge-recursive simple w/submodule result
 ok 32 - merge-recursive copy vs. rename
 not ok 33 - merge-recursive rename vs. rename/symlink # TODO known breakage
 ok 34 - merging with triple rename across D/F conflict
-# still have 3 known breakage(s)
-# passed all remaining 31 test(s)
-1..34
+ok 35 - merge-recursive remembers the names of all base trees
+# still have 1 known breakage(s)
+# passed all remaining 34 test(s)
+1..35
 *** t3031-merge-criscross.sh ***
 ok 1 - setup repo with criss-cross history
 ok 2 - recursive merge between F and G, causes segfault
 # passed all 2 test(s)
 1..2
-*** t3032-merge-recursive-options.sh ***
+*** t3032-merge-recursive-space-options.sh ***
 ok 1 - setup
 ok 2 - naive merge fails
 ok 3 - --ignore-space-change makes merge succeed
@@ -3793,8 +4089,37 @@
 ok 9 - merge FETCH_HEAD octopus non-fast-forward (ff)
 ok 10 - merge FETCH_HEAD octopus fast-forward (does not ff)
 ok 11 - merge FETCH_HEAD octopus non-fast-forward
-# passed all 11 test(s)
-1..11
+ok 12 - refuse two-project merge by default
+ok 13 - two-project merge with --allow-unrelated-histories
+# passed all 13 test(s)
+1..13
+*** t3034-merge-recursive-rename-options.sh ***
+ok 1 - setup repo
+ok 2 - setup thresholds
+ok 3 - assumption for tests: rename detection with diff
+ok 4 - default similarity threshold is 50%
+ok 5 - low rename threshold
+ok 6 - medium rename threshold
+ok 7 - high rename threshold
+ok 8 - exact renames only
+ok 9 - rename threshold is truncated
+ok 10 - disabled rename detection
+ok 11 - last wins in --find-renames=<m> --find-renames=<n>
+ok 12 - --find-renames resets threshold
+ok 13 - last wins in --no-renames --find-renames
+ok 14 - last wins in --find-renames --no-renames
+ok 15 - assumption for further tests: trivial merge succeeds
+ok 16 - --find-renames rejects negative argument
+ok 17 - --find-renames rejects non-numbers
+ok 18 - rename-threshold=<n> is a synonym for find-renames=<n>
+ok 19 - last wins in --no-renames --rename-threshold=<n>
+ok 20 - last wins in --rename-threshold=<n> --no-renames
+ok 21 - --rename-threshold=<n> rejects negative argument
+ok 22 - --rename-threshold=<n> rejects non-numbers
+ok 23 - last wins in --rename-threshold=<m> --find-renames=<n>
+ok 24 - last wins in --find-renames=<m> --rename-threshold=<n>
+# passed all 24 test(s)
+1..24
 *** t3040-subprojects-basic.sh ***
 ok 1 - setup: create superproject
 ok 2 - setup: create subprojects
@@ -4095,105 +4420,109 @@
 ok 9 - git branch j/k should work after branch j has been deleted
 ok 10 - git branch l should work after branch l/m has been deleted
 ok 11 - git branch -m dumps usage
-ok 12 - git branch -m m m/m should work
-ok 13 - git branch -m n/n n should work
-ok 14 - git branch -m o/o o should fail when o/p exists
-ok 15 - git branch -m o/q o/p should fail when o/p exists
-ok 16 - git branch -M o/q o/p should work when o/p exists
-ok 17 - git branch -m -f o/q o/p should work when o/p exists
-ok 18 - git branch -m q r/q should fail when r exists
-ok 19 - git branch -M foo bar should fail when bar is checked out
-ok 20 - git branch -M baz bam should succeed when baz is checked out
-ok 21 - git branch -M master should work when master is checked out
-ok 22 - git branch -M master master should work when master is checked out
-ok 23 - git branch -M master2 master2 should work when master is checked out
-ok 24 - git branch -v -d t should work
-ok 25 - git branch -v -m t s should work
-ok 26 - git branch -m -d t s should fail
-ok 27 - git branch --list -d t should fail
-ok 28 - git branch --column
-ok 29 - git branch --column with an extremely long branch name
-ok 30 - git branch with column.*
-ok 31 - git branch --column -v should fail
-ok 32 - git branch -v with column.ui ignored
-ok 33 - git branch -m q q2 without config should succeed
-ok 34 - git branch -m s/s s should work when s/t is deleted
-ok 35 - config information was renamed, too
-ok 36 - deleting a symref
-ok 37 - deleting a dangling symref
-ok 38 - deleting a self-referential symref
-ok 39 - renaming a symref is not allowed
-ok 40 - git branch -m u v should fail when the reflog for u is a symlink
-ok 41 - test tracking setup via --track
-ok 42 - test tracking setup (non-wildcard, matching)
-ok 43 - tracking setup fails on non-matching refspec
-ok 44 - test tracking setup via config
-ok 45 - test overriding tracking setup via --no-track
-ok 46 - no tracking without .fetch entries
-ok 47 - test tracking setup via --track but deeper
-ok 48 - test deleting branch deletes branch config
-ok 49 - test deleting branch without config
-ok 50 - test --track without .fetch entries
-ok 51 - branch from non-branch HEAD w/autosetupmerge=always
-ok 52 - branch from non-branch HEAD w/--track causes failure
-ok 53 - branch from tag w/--track causes failure
-ok 54 - --set-upstream-to fails on multiple branches
-ok 55 - --set-upstream-to fails on detached HEAD
-ok 56 - --set-upstream-to fails on a missing dst branch
-ok 57 - --set-upstream-to fails on a missing src branch
-ok 58 - --set-upstream-to fails on a non-ref
-ok 59 - --set-upstream-to fails on locked config
-ok 60 - use --set-upstream-to modify HEAD
-ok 61 - use --set-upstream-to modify a particular branch
-ok 62 - --unset-upstream should fail if given a non-existent branch
-ok 63 - --unset-upstream should fail if config is locked
-ok 64 - test --unset-upstream on HEAD
-ok 65 - --unset-upstream should fail on multiple branches
-ok 66 - --unset-upstream should fail on detached HEAD
-ok 67 - test --unset-upstream on a particular branch
-ok 68 - --set-upstream shows message when creating a new branch that exists as remote-tracking
-ok 69 - --set-upstream with two args only shows the deprecation message
-ok 70 - --set-upstream with one arg only shows the deprecation message if the branch existed
-ok 71 - --set-upstream-to notices an error to set branch as own upstream
-ok 72 - git checkout -b g/h/i -l should create a branch and a log
-ok 73 - checkout -b makes reflog by default
-ok 74 - checkout -b does not make reflog when core.logAllRefUpdates = false
-ok 75 - checkout -b with -l makes reflog when core.logAllRefUpdates = false
-ok 76 - avoid ambiguous track
-ok 77 - autosetuprebase local on a tracked local branch
-ok 78 - autosetuprebase always on a tracked local branch
-ok 79 - autosetuprebase remote on a tracked local branch
-ok 80 - autosetuprebase never on a tracked local branch
-ok 81 - autosetuprebase local on a tracked remote branch
-ok 82 - autosetuprebase never on a tracked remote branch
-ok 83 - autosetuprebase remote on a tracked remote branch
-ok 84 - autosetuprebase always on a tracked remote branch
-ok 85 - autosetuprebase unconfigured on a tracked remote branch
-ok 86 - autosetuprebase unconfigured on a tracked local branch
-ok 87 - autosetuprebase unconfigured on untracked local branch
-ok 88 - autosetuprebase unconfigured on untracked remote branch
-ok 89 - autosetuprebase never on an untracked local branch
-ok 90 - autosetuprebase local on an untracked local branch
-ok 91 - autosetuprebase remote on an untracked local branch
-ok 92 - autosetuprebase always on an untracked local branch
-ok 93 - autosetuprebase never on an untracked remote branch
-ok 94 - autosetuprebase local on an untracked remote branch
-ok 95 - autosetuprebase remote on an untracked remote branch
-ok 96 - autosetuprebase always on an untracked remote branch
-ok 97 - autosetuprebase always on detached HEAD
-ok 98 - detect misconfigured autosetuprebase (bad value)
-ok 99 - detect misconfigured autosetuprebase (no value)
-ok 100 - attempt to delete a branch without base and unmerged to HEAD
-ok 101 - attempt to delete a branch merged to its base
-ok 102 - attempt to delete a branch merged to its base
-ok 103 - use set-upstream on the current branch
-ok 104 - use --edit-description
-ok 105 - detect typo in branch name when using --edit-description
-ok 106 - refuse --edit-description on unborn branch for now
-ok 107 - --merged catches invalid object names
-ok 108 - tracking with unexpected .fetch refspec
-# passed all 108 test(s)
-1..108
+ok 12 - git branch -m m broken_symref should work
+ok 13 - git branch -m m m/m should work
+ok 14 - git branch -m n/n n should work
+ok 15 - git branch -m o/o o should fail when o/p exists
+ok 16 - git branch -m o/q o/p should fail when o/p exists
+ok 17 - git branch -M o/q o/p should work when o/p exists
+ok 18 - git branch -m -f o/q o/p should work when o/p exists
+ok 19 - git branch -m q r/q should fail when r exists
+ok 20 - git branch -M foo bar should fail when bar is checked out
+ok 21 - git branch -M baz bam should succeed when baz is checked out
+ok 22 - git branch -M baz bam should succeed when baz is checked out as linked working tree
+ok 23 - git branch -M baz bam should succeed within a worktree in which baz is checked out
+ok 24 - git branch -M master should work when master is checked out
+ok 25 - git branch -M master master should work when master is checked out
+ok 26 - git branch -M master2 master2 should work when master is checked out
+ok 27 - git branch -v -d t should work
+ok 28 - git branch -v -m t s should work
+ok 29 - git branch -m -d t s should fail
+ok 30 - git branch --list -d t should fail
+ok 31 - git branch --column
+ok 32 - git branch --column with an extremely long branch name
+ok 33 - git branch with column.*
+ok 34 - git branch --column -v should fail
+ok 35 - git branch -v with column.ui ignored
+ok 36 - git branch -m q q2 without config should succeed
+ok 37 - git branch -m s/s s should work when s/t is deleted
+ok 38 - config information was renamed, too
+ok 39 - deleting a symref
+ok 40 - deleting a dangling symref
+ok 41 - deleting a self-referential symref
+ok 42 - renaming a symref is not allowed
+ok 43 - git branch -m u v should fail when the reflog for u is a symlink
+ok 44 - test tracking setup via --track
+ok 45 - test tracking setup (non-wildcard, matching)
+ok 46 - tracking setup fails on non-matching refspec
+ok 47 - test tracking setup via config
+ok 48 - test overriding tracking setup via --no-track
+ok 49 - no tracking without .fetch entries
+ok 50 - test tracking setup via --track but deeper
+ok 51 - test deleting branch deletes branch config
+ok 52 - test deleting branch without config
+ok 53 - deleting currently checked out branch fails
+ok 54 - test --track without .fetch entries
+ok 55 - branch from non-branch HEAD w/autosetupmerge=always
+ok 56 - branch from non-branch HEAD w/--track causes failure
+ok 57 - branch from tag w/--track causes failure
+ok 58 - --set-upstream-to fails on multiple branches
+ok 59 - --set-upstream-to fails on detached HEAD
+ok 60 - --set-upstream-to fails on a missing dst branch
+ok 61 - --set-upstream-to fails on a missing src branch
+ok 62 - --set-upstream-to fails on a non-ref
+ok 63 - --set-upstream-to fails on locked config
+ok 64 - use --set-upstream-to modify HEAD
+ok 65 - use --set-upstream-to modify a particular branch
+ok 66 - --unset-upstream should fail if given a non-existent branch
+ok 67 - --unset-upstream should fail if config is locked
+ok 68 - test --unset-upstream on HEAD
+ok 69 - --unset-upstream should fail on multiple branches
+ok 70 - --unset-upstream should fail on detached HEAD
+ok 71 - test --unset-upstream on a particular branch
+ok 72 - --set-upstream shows message when creating a new branch that exists as remote-tracking
+ok 73 - --set-upstream with two args only shows the deprecation message
+ok 74 - --set-upstream with one arg only shows the deprecation message if the branch existed
+ok 75 - --set-upstream-to notices an error to set branch as own upstream
+ok 76 - git checkout -b g/h/i -l should create a branch and a log
+ok 77 - checkout -b makes reflog by default
+ok 78 - checkout -b does not make reflog when core.logAllRefUpdates = false
+ok 79 - checkout -b with -l makes reflog when core.logAllRefUpdates = false
+ok 80 - avoid ambiguous track
+ok 81 - autosetuprebase local on a tracked local branch
+ok 82 - autosetuprebase always on a tracked local branch
+ok 83 - autosetuprebase remote on a tracked local branch
+ok 84 - autosetuprebase never on a tracked local branch
+ok 85 - autosetuprebase local on a tracked remote branch
+ok 86 - autosetuprebase never on a tracked remote branch
+ok 87 - autosetuprebase remote on a tracked remote branch
+ok 88 - autosetuprebase always on a tracked remote branch
+ok 89 - autosetuprebase unconfigured on a tracked remote branch
+ok 90 - autosetuprebase unconfigured on a tracked local branch
+ok 91 - autosetuprebase unconfigured on untracked local branch
+ok 92 - autosetuprebase unconfigured on untracked remote branch
+ok 93 - autosetuprebase never on an untracked local branch
+ok 94 - autosetuprebase local on an untracked local branch
+ok 95 - autosetuprebase remote on an untracked local branch
+ok 96 - autosetuprebase always on an untracked local branch
+ok 97 - autosetuprebase never on an untracked remote branch
+ok 98 - autosetuprebase local on an untracked remote branch
+ok 99 - autosetuprebase remote on an untracked remote branch
+ok 100 - autosetuprebase always on an untracked remote branch
+ok 101 - autosetuprebase always on detached HEAD
+ok 102 - detect misconfigured autosetuprebase (bad value)
+ok 103 - detect misconfigured autosetuprebase (no value)
+ok 104 - attempt to delete a branch without base and unmerged to HEAD
+ok 105 - attempt to delete a branch merged to its base
+ok 106 - attempt to delete a branch merged to its base
+ok 107 - use set-upstream on the current branch
+ok 108 - use --edit-description
+ok 109 - detect typo in branch name when using --edit-description
+ok 110 - refuse --edit-description on unborn branch for now
+ok 111 - --merged catches invalid object names
+ok 112 - tracking with unexpected .fetch refspec
+# passed all 112 test(s)
+1..112
 *** t3201-branch-contains.sh ***
 ok 1 - setup
 ok 2 - branch --contains=master
@@ -4227,17 +4556,20 @@
 ok 8 - git branch -a shows local and remote branches
 ok 9 - git branch -v shows branch summaries
 ok 10 - git branch --list -v pattern shows branch summaries
-ok 11 - git branch -v pattern does not show branch summaries
-ok 12 - git branch shows detached HEAD properly
-ok 13 - git branch shows detached HEAD properly after checkout --detach
-ok 14 - git branch shows detached HEAD properly after moving
-ok 15 - git branch shows detached HEAD properly from tag
-ok 16 - git branch shows detached HEAD properly after moving from tag
-ok 17 - git branch `--sort` option
-ok 18 - git branch --points-at option
-ok 19 - ambiguous branch/tag not marked
-# passed all 19 test(s)
-1..19
+ok 11 - git branch --ignore-case --list -v pattern shows branch summaries
+ok 12 - git branch -v pattern does not show branch summaries
+ok 13 - git branch shows detached HEAD properly
+ok 14 - git branch shows detached HEAD properly after checkout --detach
+ok 15 - git branch shows detached HEAD properly after moving
+ok 16 - git branch shows detached HEAD properly from tag
+ok 17 - git branch shows detached HEAD properly after moving from tag
+ok 18 - git branch `--sort` option
+ok 19 - git branch --points-at option
+ok 20 - ambiguous branch/tag not marked
+ok 21 - local-branch symrefs shortened properly
+ok 22 - sort branches, ignore case
+# passed all 22 test(s)
+1..22
 *** t3210-pack-refs.sh ***
 ok 1 - enable reflogs
 ok 2 - prepare a trivial repository
@@ -4314,129 +4646,131 @@
 ok 9 - show notes entry with %N
 ok 10 - create reflog entry
 ok 11 - edit existing notes
-ok 12 - cannot "git notes add -m" where notes already exists
-ok 13 - can overwrite existing note with "git notes add -f -m"
-ok 14 - add w/no options on existing note morphs into edit
-ok 15 - can overwrite existing note with "git notes add -f"
-ok 16 - show notes
-ok 17 - show multi-line notes
-ok 18 - show -F notes
-ok 19 - Re-adding -F notes without -f fails
-ok 20 - git log --pretty=raw does not show notes
-ok 21 - git log --show-notes
-ok 22 - git log --no-notes
-ok 23 - git format-patch does not show notes
-ok 24 - git format-patch --show-notes does show notes
-ok 25 - git show  does show notes
-ok 26 - git show --pretty does not show notes
-ok 27 - git show --pretty=raw does not show notes
-ok 28 - git show --pretty=short does not show notes
-ok 29 - git show --pretty=medium does not show notes
-ok 30 - git show --pretty=full does not show notes
-ok 31 - git show --pretty=fuller does not show notes
-ok 32 - git show --pretty=format:%s does not show notes
-ok 33 - git show --oneline does not show notes
-ok 34 - setup alternate notes ref
-ok 35 - git log --notes shows default notes
-ok 36 - git log --notes=X shows only X
-ok 37 - git log --notes --notes=X shows both
-ok 38 - git log --no-notes resets default state
-ok 39 - git log --no-notes resets ref list
-ok 40 - show -m notes
-ok 41 - remove note with add -f -F /dev/null
-ok 42 - do not create empty note with -m ""
-ok 43 - create note with combination of -m and -F
-ok 44 - remove note with "git notes remove"
-ok 45 - removing non-existing note should not create new commit
-ok 46 - removing more than one
-ok 47 - removing is atomic
-ok 48 - removing with --ignore-missing
-ok 49 - removing with --ignore-missing but bogus ref
-ok 50 - remove reads from --stdin
-ok 51 - remove --stdin is also atomic
-ok 52 - removing with --stdin --ignore-missing
-ok 53 - list notes with "git notes list"
-ok 54 - list notes with "git notes"
-ok 55 - list specific note with "git notes list <object>"
-ok 56 - listing non-existing notes fails
-ok 57 - append to existing note with "git notes append"
-ok 58 - "git notes list" does not expand to "git notes list HEAD"
-ok 59 - appending empty string does not change existing note
-ok 60 - git notes append == add when there is no existing note
-ok 61 - appending empty string to non-existing note does not create note
-ok 62 - create other note on a different notes ref (setup)
-ok 63 - Do not show note on other ref by default
-ok 64 - Do show note when ref is given in GIT_NOTES_REF
-ok 65 - Do show note when ref is given in core.notesRef config
-ok 66 - Do not show note when core.notesRef is overridden
-ok 67 - Show all notes when notes.displayRef=refs/notes/*
-ok 68 - core.notesRef is implicitly in notes.displayRef
-ok 69 - notes.displayRef can be given more than once
-ok 70 - notes.displayRef respects order
-ok 71 - GIT_NOTES_DISPLAY_REF works
-ok 72 - GIT_NOTES_DISPLAY_REF overrides config
-ok 73 - --show-notes=* adds to GIT_NOTES_DISPLAY_REF
-ok 74 - --no-standard-notes
-ok 75 - --standard-notes
-ok 76 - --show-notes=ref accumulates
-ok 77 - Allow notes on non-commits (trees, blobs, tags)
-ok 78 - create note from other note with "git notes add -C"
-ok 79 - create note from non-existing note with "git notes add -C" fails
-ok 80 - create note from non-blob with "git notes add -C" fails
-ok 81 - create note from blob with "git notes add -C" reuses blob id
-ok 82 - create note from other note with "git notes add -c"
-ok 83 - create note from non-existing note with "git notes add -c" fails
-ok 84 - append to note from other note with "git notes append -C"
-ok 85 - create note from other note with "git notes append -c"
-ok 86 - append to note from other note with "git notes append -c"
-ok 87 - copy note with "git notes copy"
-ok 88 - prevent overwrite with "git notes copy"
-ok 89 - allow overwrite with "git notes copy -f"
-ok 90 - cannot copy note from object without notes
-ok 91 - git notes copy --stdin
-ok 92 - git notes copy --for-rewrite (unconfigured)
-ok 93 - git notes copy --for-rewrite (enabled)
-ok 94 - git notes copy --for-rewrite (disabled)
-ok 95 - git notes copy --for-rewrite (overwrite)
-ok 96 - git notes copy --for-rewrite (ignore)
-ok 97 - git notes copy --for-rewrite (append)
-ok 98 - git notes copy --for-rewrite (append two to one)
-ok 99 - git notes copy --for-rewrite (append empty)
-ok 100 - GIT_NOTES_REWRITE_MODE works
-ok 101 - GIT_NOTES_REWRITE_REF works
-ok 102 - GIT_NOTES_REWRITE_REF overrides config
-ok 103 - git notes copy diagnoses too many or too few parameters
-ok 104 - git notes get-ref expands refs/heads/master to refs/notes/refs/heads/master
-ok 105 - git notes get-ref (no overrides)
-ok 106 - git notes get-ref (core.notesRef)
-ok 107 - git notes get-ref (GIT_NOTES_REF)
-ok 108 - git notes get-ref (--ref)
-ok 109 - setup testing of empty notes
-ok 110 - 'git notes add' removes empty note
-ok 111 - 'git notes add --allow-empty' stores empty note
-ok 112 - 'git notes add -F /dev/null' removes empty note
-ok 113 - 'git notes add -F /dev/null --allow-empty' stores empty note
-ok 114 - 'git notes add -m ""' removes empty note
-ok 115 - 'git notes add -m "" --allow-empty' stores empty note
-ok 116 - 'git notes add -c "$empty_blob"' removes empty note
-ok 117 - 'git notes add -c "$empty_blob" --allow-empty' stores empty note
-ok 118 - 'git notes add -C "$empty_blob"' removes empty note
-ok 119 - 'git notes add -C "$empty_blob" --allow-empty' stores empty note
-ok 120 - 'git notes append' removes empty note
-ok 121 - 'git notes append --allow-empty' stores empty note
-ok 122 - 'git notes append -F /dev/null' removes empty note
-ok 123 - 'git notes append -F /dev/null --allow-empty' stores empty note
-ok 124 - 'git notes append -m ""' removes empty note
-ok 125 - 'git notes append -m "" --allow-empty' stores empty note
-ok 126 - 'git notes append -c "$empty_blob"' removes empty note
-ok 127 - 'git notes append -c "$empty_blob" --allow-empty' stores empty note
-ok 128 - 'git notes append -C "$empty_blob"' removes empty note
-ok 129 - 'git notes append -C "$empty_blob" --allow-empty' stores empty note
-ok 130 - 'git notes edit' removes empty note
-ok 131 - 'git notes edit --allow-empty' stores empty note
-ok 132 - empty notes are displayed by git log
-# passed all 132 test(s)
-1..132
+ok 12 - show notes from treeish
+ok 13 - cannot edit notes from non-ref
+ok 14 - cannot "git notes add -m" where notes already exists
+ok 15 - can overwrite existing note with "git notes add -f -m"
+ok 16 - add w/no options on existing note morphs into edit
+ok 17 - can overwrite existing note with "git notes add -f"
+ok 18 - show notes
+ok 19 - show multi-line notes
+ok 20 - show -F notes
+ok 21 - Re-adding -F notes without -f fails
+ok 22 - git log --pretty=raw does not show notes
+ok 23 - git log --show-notes
+ok 24 - git log --no-notes
+ok 25 - git format-patch does not show notes
+ok 26 - git format-patch --show-notes does show notes
+ok 27 - git show  does show notes
+ok 28 - git show --pretty does not show notes
+ok 29 - git show --pretty=raw does not show notes
+ok 30 - git show --pretty=short does not show notes
+ok 31 - git show --pretty=medium does not show notes
+ok 32 - git show --pretty=full does not show notes
+ok 33 - git show --pretty=fuller does not show notes
+ok 34 - git show --pretty=format:%s does not show notes
+ok 35 - git show --oneline does not show notes
+ok 36 - setup alternate notes ref
+ok 37 - git log --notes shows default notes
+ok 38 - git log --notes=X shows only X
+ok 39 - git log --notes --notes=X shows both
+ok 40 - git log --no-notes resets default state
+ok 41 - git log --no-notes resets ref list
+ok 42 - show -m notes
+ok 43 - remove note with add -f -F /dev/null
+ok 44 - do not create empty note with -m ""
+ok 45 - create note with combination of -m and -F
+ok 46 - remove note with "git notes remove"
+ok 47 - removing non-existing note should not create new commit
+ok 48 - removing more than one
+ok 49 - removing is atomic
+ok 50 - removing with --ignore-missing
+ok 51 - removing with --ignore-missing but bogus ref
+ok 52 - remove reads from --stdin
+ok 53 - remove --stdin is also atomic
+ok 54 - removing with --stdin --ignore-missing
+ok 55 - list notes with "git notes list"
+ok 56 - list notes with "git notes"
+ok 57 - list specific note with "git notes list <object>"
+ok 58 - listing non-existing notes fails
+ok 59 - append to existing note with "git notes append"
+ok 60 - "git notes list" does not expand to "git notes list HEAD"
+ok 61 - appending empty string does not change existing note
+ok 62 - git notes append == add when there is no existing note
+ok 63 - appending empty string to non-existing note does not create note
+ok 64 - create other note on a different notes ref (setup)
+ok 65 - Do not show note on other ref by default
+ok 66 - Do show note when ref is given in GIT_NOTES_REF
+ok 67 - Do show note when ref is given in core.notesRef config
+ok 68 - Do not show note when core.notesRef is overridden
+ok 69 - Show all notes when notes.displayRef=refs/notes/*
+ok 70 - core.notesRef is implicitly in notes.displayRef
+ok 71 - notes.displayRef can be given more than once
+ok 72 - notes.displayRef respects order
+ok 73 - GIT_NOTES_DISPLAY_REF works
+ok 74 - GIT_NOTES_DISPLAY_REF overrides config
+ok 75 - --show-notes=* adds to GIT_NOTES_DISPLAY_REF
+ok 76 - --no-standard-notes
+ok 77 - --standard-notes
+ok 78 - --show-notes=ref accumulates
+ok 79 - Allow notes on non-commits (trees, blobs, tags)
+ok 80 - create note from other note with "git notes add -C"
+ok 81 - create note from non-existing note with "git notes add -C" fails
+ok 82 - create note from non-blob with "git notes add -C" fails
+ok 83 - create note from blob with "git notes add -C" reuses blob id
+ok 84 - create note from other note with "git notes add -c"
+ok 85 - create note from non-existing note with "git notes add -c" fails
+ok 86 - append to note from other note with "git notes append -C"
+ok 87 - create note from other note with "git notes append -c"
+ok 88 - append to note from other note with "git notes append -c"
+ok 89 - copy note with "git notes copy"
+ok 90 - prevent overwrite with "git notes copy"
+ok 91 - allow overwrite with "git notes copy -f"
+ok 92 - cannot copy note from object without notes
+ok 93 - git notes copy --stdin
+ok 94 - git notes copy --for-rewrite (unconfigured)
+ok 95 - git notes copy --for-rewrite (enabled)
+ok 96 - git notes copy --for-rewrite (disabled)
+ok 97 - git notes copy --for-rewrite (overwrite)
+ok 98 - git notes copy --for-rewrite (ignore)
+ok 99 - git notes copy --for-rewrite (append)
+ok 100 - git notes copy --for-rewrite (append two to one)
+ok 101 - git notes copy --for-rewrite (append empty)
+ok 102 - GIT_NOTES_REWRITE_MODE works
+ok 103 - GIT_NOTES_REWRITE_REF works
+ok 104 - GIT_NOTES_REWRITE_REF overrides config
+ok 105 - git notes copy diagnoses too many or too few parameters
+ok 106 - git notes get-ref expands refs/heads/master to refs/notes/refs/heads/master
+ok 107 - git notes get-ref (no overrides)
+ok 108 - git notes get-ref (core.notesRef)
+ok 109 - git notes get-ref (GIT_NOTES_REF)
+ok 110 - git notes get-ref (--ref)
+ok 111 - setup testing of empty notes
+ok 112 - 'git notes add' removes empty note
+ok 113 - 'git notes add --allow-empty' stores empty note
+ok 114 - 'git notes add -F /dev/null' removes empty note
+ok 115 - 'git notes add -F /dev/null --allow-empty' stores empty note
+ok 116 - 'git notes add -m ""' removes empty note
+ok 117 - 'git notes add -m "" --allow-empty' stores empty note
+ok 118 - 'git notes add -c "$empty_blob"' removes empty note
+ok 119 - 'git notes add -c "$empty_blob" --allow-empty' stores empty note
+ok 120 - 'git notes add -C "$empty_blob"' removes empty note
+ok 121 - 'git notes add -C "$empty_blob" --allow-empty' stores empty note
+ok 122 - 'git notes append' removes empty note
+ok 123 - 'git notes append --allow-empty' stores empty note
+ok 124 - 'git notes append -F /dev/null' removes empty note
+ok 125 - 'git notes append -F /dev/null --allow-empty' stores empty note
+ok 126 - 'git notes append -m ""' removes empty note
+ok 127 - 'git notes append -m "" --allow-empty' stores empty note
+ok 128 - 'git notes append -c "$empty_blob"' removes empty note
+ok 129 - 'git notes append -c "$empty_blob" --allow-empty' stores empty note
+ok 130 - 'git notes append -C "$empty_blob"' removes empty note
+ok 131 - 'git notes append -C "$empty_blob" --allow-empty' stores empty note
+ok 132 - 'git notes edit' removes empty note
+ok 133 - 'git notes edit --allow-empty' stores empty note
+ok 134 - empty notes are displayed by git log
+# passed all 134 test(s)
+1..134
 *** t3302-notes-index-expensive.sh ***
 ok 1 - setup 10
 ok 2 - notes work
@@ -4522,7 +4856,7 @@
 ok 2 - verify initial notes (x)
 ok 3 - fail to merge empty notes ref into empty notes ref (z => y)
 ok 4 - fail to merge into various non-notes refs
-ok 5 - fail to merge various non-note-trees
+ok 5 - merge non-notes ref into empty notes ref (remote-notes/origin/x => v)
 ok 6 - merge notes into empty notes ref (x => y)
 ok 7 - merge empty notes ref (z => y)
 ok 8 - change notes on other notes ref (y)
@@ -4671,12 +5005,13 @@
 ok 5 - merge and rebase should match
 ok 6 - rebase the other way
 ok 7 - rebase -Xtheirs
-ok 8 - merge and rebase should match
-ok 9 - picking rebase
-ok 10 - rebase -s funny -Xopt
-ok 11 - rebase --skip works with two conflicts in a row
-# passed all 11 test(s)
-1..11
+ok 8 - rebase -Xtheirs from orphan
+ok 9 - merge and rebase should match
+ok 10 - picking rebase
+ok 11 - rebase -s funny -Xopt
+ok 12 - rebase --skip works with two conflicts in a row
+# passed all 12 test(s)
+1..12
 *** t3403-rebase-skip.sh ***
 ok 1 - setup
 ok 2 - rebase with git am -3 (default)
@@ -4707,85 +5042,88 @@
 ok 14 - abort
 ok 15 - abort with error when new base cannot be checked out
 ok 16 - retain authorship
-ok 17 - squash
-ok 18 - retain authorship when squashing
-ok 19 - -p handles "no changes" gracefully
-not ok 20 - exchange two commits with -p # TODO known breakage
-ok 21 - preserve merges with -p
-ok 22 - edit ancestor with -p
-ok 23 - --continue tries to commit
-ok 24 - verbose flag is heeded, even after --continue
-ok 25 - multi-squash only fires up editor once
-ok 26 - multi-fixup does not fire up editor
-ok 27 - commit message used after conflict
-ok 28 - commit message retained after conflict
-ok 29 - squash and fixup generate correct log messages
-ok 30 - squash ignores comments
-ok 31 - squash ignores blank lines
-ok 32 - squash works as expected
-ok 33 - interrupted squash works as expected
-ok 34 - interrupted squash works as expected (case 2)
-ok 35 - --continue tries to commit, even for "edit"
-ok 36 - aborted --continue does not squash commits after "edit"
-ok 37 - auto-amend only edited commits after "edit"
-ok 38 - clean error after failed "exec"
-ok 39 - rebase a detached HEAD
-ok 40 - rebase a commit violating pre-commit
-ok 41 - rebase with a file named HEAD in worktree
-ok 42 - do "noop" when there is nothing to cherry-pick
-ok 43 - submodule rebase setup
-ok 44 - submodule rebase -i
-ok 45 - submodule conflict setup
-ok 46 - rebase -i continue with only submodule staged
-ok 47 - rebase -i continue with unstaged submodule
-ok 48 - avoid unnecessary reset
-ok 49 - reword
-ok 50 - rebase -i can copy notes
-ok 51 - rebase -i can copy notes over a fixup
-ok 52 - rebase while detaching HEAD
-ok 53 - always cherry-pick with --no-ff
-ok 54 - set up commits with funny messages
-ok 55 - rebase-i history with funny messages
-ok 56 - prepare for rebase -i --exec
-ok 57 - running "git rebase -i --exec git show HEAD"
-ok 58 - running "git rebase --exec git show HEAD -i"
-ok 59 - running "git rebase -ix git show HEAD"
-ok 60 - rebase -ix with several <CMD>
-ok 61 - rebase -ix with several instances of --exec
-ok 62 - rebase -ix with --autosquash
-ok 63 - rebase --exec without -i shows error message
-ok 64 - rebase -i --exec without <CMD>
-ok 65 - rebase -i --root re-order and drop commits
-ok 66 - rebase -i --root retain root commit author and message
-ok 67 - rebase -i --root temporary sentinel commit
-ok 68 - rebase -i --root fixup root commit
-ok 69 - rebase --edit-todo does not works on non-interactive rebase
-ok 70 - rebase --edit-todo can be used to modify todo
-ok 71 - rebase -i produces readable reflog
-ok 72 - rebase -i respects core.commentchar
-ok 73 - rebase -i, with <onto> and <upstream> specified as :/quuxery
-ok 74 - rebase -i with --strategy and -X
-ok 75 - interrupted rebase -i with --strategy and -X
-ok 76 - rebase -i error on commits with \ in message
-ok 77 - short SHA-1 setup
-ok 78 - short SHA-1 collide
-ok 79 - respect core.abbrev
-ok 80 - todo count
-ok 81 - rebase -i commits that overwrite untracked files (pick)
-ok 82 - rebase -i commits that overwrite untracked files (squash)
-ok 83 - rebase -i commits that overwrite untracked files (no ff)
-ok 84 - rebase --continue removes CHERRY_PICK_HEAD
-ok 85 - drop
-ok 86 - rebase -i respects rebase.missingCommitsCheck = ignore
-ok 87 - rebase -i respects rebase.missingCommitsCheck = warn
-ok 88 - rebase -i respects rebase.missingCommitsCheck = error
-ok 89 - static check of bad command
-ok 90 - tabs and spaces are accepted in the todolist
-ok 91 - static check of bad SHA-1
-ok 92 - editor saves as CR/LF
+ok 17 - retain authorship w/ conflicts
+ok 18 - squash
+ok 19 - retain authorship when squashing
+ok 20 - -p handles "no changes" gracefully
+not ok 21 - exchange two commits with -p # TODO known breakage
+ok 22 - preserve merges with -p
+ok 23 - edit ancestor with -p
+ok 24 - --continue tries to commit
+ok 25 - verbose flag is heeded, even after --continue
+ok 26 - multi-squash only fires up editor once
+ok 27 - multi-fixup does not fire up editor
+ok 28 - commit message used after conflict
+ok 29 - commit message retained after conflict
+ok 30 - squash and fixup generate correct log messages
+ok 31 - squash ignores comments
+ok 32 - squash ignores blank lines
+ok 33 - squash works as expected
+ok 34 - interrupted squash works as expected
+ok 35 - interrupted squash works as expected (case 2)
+ok 36 - --continue tries to commit, even for "edit"
+ok 37 - aborted --continue does not squash commits after "edit"
+ok 38 - auto-amend only edited commits after "edit"
+ok 39 - clean error after failed "exec"
+ok 40 - rebase a detached HEAD
+ok 41 - rebase a commit violating pre-commit
+ok 42 - rebase with a file named HEAD in worktree
+ok 43 - do "noop" when there is nothing to cherry-pick
+ok 44 - submodule rebase setup
+ok 45 - submodule rebase -i
+ok 46 - submodule conflict setup
+ok 47 - rebase -i continue with only submodule staged
+ok 48 - rebase -i continue with unstaged submodule
+ok 49 - avoid unnecessary reset
+ok 50 - reword
+ok 51 - rebase -i can copy notes
+ok 52 - rebase -i can copy notes over a fixup
+ok 53 - rebase while detaching HEAD
+ok 54 - always cherry-pick with --no-ff
+ok 55 - set up commits with funny messages
+ok 56 - rebase-i history with funny messages
+ok 57 - prepare for rebase -i --exec
+ok 58 - running "git rebase -i --exec git show HEAD"
+ok 59 - running "git rebase --exec git show HEAD -i"
+ok 60 - running "git rebase -ix git show HEAD"
+ok 61 - rebase -ix with several <CMD>
+ok 62 - rebase -ix with several instances of --exec
+ok 63 - rebase -ix with --autosquash
+ok 64 - rebase --exec works without -i 
+ok 65 - rebase -i --exec without <CMD>
+ok 66 - rebase -i --root re-order and drop commits
+ok 67 - rebase -i --root retain root commit author and message
+ok 68 - rebase -i --root temporary sentinel commit
+ok 69 - rebase -i --root fixup root commit
+ok 70 - rebase --edit-todo does not works on non-interactive rebase
+ok 71 - rebase --edit-todo can be used to modify todo
+ok 72 - rebase -i produces readable reflog
+ok 73 - rebase -i respects core.commentchar
+ok 74 - rebase -i respects core.commentchar=auto
+ok 75 - rebase -i, with <onto> and <upstream> specified as :/quuxery
+ok 76 - rebase -i with --strategy and -X
+ok 77 - interrupted rebase -i with --strategy and -X
+ok 78 - rebase -i error on commits with \ in message
+ok 79 - short SHA-1 setup
+ok 80 - short SHA-1 collide
+ok 81 - respect core.abbrev
+ok 82 - todo count
+ok 83 - rebase -i commits that overwrite untracked files (pick)
+ok 84 - rebase -i commits that overwrite untracked files (squash)
+ok 85 - rebase -i commits that overwrite untracked files (no ff)
+ok 86 - rebase --continue removes CHERRY_PICK_HEAD
+ok 87 - drop
+ok 88 - rebase -i respects rebase.missingCommitsCheck = ignore
+ok 89 - rebase -i respects rebase.missingCommitsCheck = warn
+ok 90 - rebase -i respects rebase.missingCommitsCheck = error
+ok 91 - static check of bad command
+ok 92 - tabs and spaces are accepted in the todolist
+ok 93 - static check of bad SHA-1
+ok 94 - editor saves as CR/LF
+ok 95 - rebase -i --gpg-sign=<key-id>
 # still have 1 known breakage(s)
-# passed all remaining 91 test(s)
-1..92
+# passed all remaining 94 test(s)
+1..95
 *** t3405-rebase-malformed.sh ***
 ok 1 - setup
 ok 2 - rebase commit with multi-line subject
@@ -4817,8 +5155,10 @@
 ok 9 - rebase --merge --abort after --continue
 ok 10 - rebase --merge --abort does not update reflog
 ok 11 - rebase --abort can not be used with other options
-# passed all 11 test(s)
-1..11
+ok 12 - rebase --quit
+ok 13 - rebase --merge --quit
+# passed all 13 test(s)
+1..13
 *** t3408-rebase-multi-line.sh ***
 ok 1 - setup
 ok 2 - rebase
@@ -4920,8 +5260,11 @@
 ok 15 - squash! squash!
 ok 16 - squash! fixup!
 ok 17 - autosquash with custom inst format
-# passed all 17 test(s)
-1..17
+not ok 18 - autosquash with multiple empty patches # TODO known breakage
+ok 19 - extra spaces after fixup!
+# still have 1 known breakage(s)
+# passed all remaining 18 test(s)
+1..19
 *** t3416-rebase-onto-threedots.sh ***
 ok 1 - setup
 ok 2 - rebase --onto master...topic
@@ -4990,8 +5333,10 @@
 ok 26 - rebase --interactive: --abort
 ok 27 - rebase --interactive: non-conflicting rebase, conflicting stash
 ok 28 - abort rebase -i with --autostash
-# passed all 28 test(s)
-1..28
+ok 29 - restore autostash on editor failure
+ok 30 - autostash is saved on editor failure with conflict
+# passed all 30 test(s)
+1..30
 *** t3421-rebase-topology-linear.sh ***
 ok 1 - setup
 ok 2 - simple rebase 
@@ -5042,11 +5387,11 @@
 not ok 47 - rebase -p --keep-empty keeps empty even if already in upstream # TODO known breakage
 ok 48 - setup of linear history for test involving root
 ok 49 - rebase  --onto --root
-not ok 50 - rebase -m --onto --root # TODO known breakage
+ok 50 - rebase -m --onto --root
 ok 51 - rebase -i --onto --root
 ok 52 - rebase -p --onto --root
 ok 53 - rebase  without --onto --root with disjoint history
-not ok 54 - rebase -m without --onto --root with disjoint history # TODO known breakage
+ok 54 - rebase -m without --onto --root with disjoint history
 ok 55 - rebase -i without --onto --root with disjoint history
 not ok 56 - rebase -p without --onto --root with disjoint history # TODO known breakage
 ok 57 - rebase  --onto --root drops patch in onto
@@ -5069,8 +5414,8 @@
 ok 74 - rebase -m -f --root on linear history causes re-write
 ok 75 - rebase -i -f --root on linear history causes re-write
 ok 76 - rebase -p -f --root on linear history causes re-write
-# still have 20 known breakage(s)
-# passed all remaining 56 test(s)
+# still have 18 known breakage(s)
+# passed all remaining 58 test(s)
 1..76
 *** t3425-rebase-topology-merges.sh ***
 ok 1 - setup of non-linear-history
@@ -5124,7 +5469,7 @@
 ok 16 - git_rebase_interactive: added submodule leaves existing empty directory alone
 ok 17 - git_rebase_interactive: added submodule doesn't remove untracked unignored file with same name
 ok 18 - git_rebase_interactive: replace tracked file with submodule creates empty directory
-not ok 19 - git_rebase_interactive: replace directory with submodule # TODO known breakage
+ok 19 - git_rebase_interactive: replace directory with submodule
 ok 20 - git_rebase_interactive: removed submodule leaves submodule directory and its contents in place
 ok 21 - git_rebase_interactive: removed submodule leaves submodule containing a .git directory alone
 ok 22 - git_rebase_interactive: replace submodule with a directory must fail
@@ -5134,9 +5479,22 @@
 ok 26 - git_rebase_interactive: modified submodule does not update submodule work tree
 ok 27 - git_rebase_interactive: modified submodule does not update submodule work tree to invalid commit
 ok 28 - git_rebase_interactive: modified submodule does not update submodule work tree from invalid commit
-# still have 5 known breakage(s)
-# passed all remaining 23 test(s)
+# still have 4 known breakage(s)
+# passed all remaining 24 test(s)
 1..28
+*** t3427-rebase-subtree.sh ***
+ok 1 - setup
+not ok 2 - Rebase -Xsubtree --preserve-merges --onto commit 4 # TODO known breakage
+not ok 3 - Rebase -Xsubtree --preserve-merges --onto commit 5 # TODO known breakage
+not ok 4 - Rebase -Xsubtree --keep-empty --preserve-merges --onto commit 4 # TODO known breakage
+not ok 5 - Rebase -Xsubtree --keep-empty --preserve-merges --onto commit 5 # TODO known breakage
+not ok 6 - Rebase -Xsubtree --keep-empty --preserve-merges --onto empty commit # TODO known breakage
+not ok 7 - Rebase -Xsubtree --onto commit 4 # TODO known breakage
+not ok 8 - Rebase -Xsubtree --onto commit 5 # TODO known breakage
+not ok 9 - Rebase -Xsubtree --onto empty commit # TODO known breakage
+# still have 8 known breakage(s)
+# passed all remaining 1 test(s)
+1..9
 *** t3500-cherry.sh ***
 ok 1 - prepare repository with topic branch, and check cherry finds the 2 patches from there
 ok 2 - check that cherry with limit returns only the top patch
@@ -5155,8 +5513,9 @@
 ok 9 - cherry-pick "-" to pick from previous branch
 ok 10 - cherry-pick "-" is meaningless without checkout
 ok 11 - cherry-pick "-" works with arguments
-# passed all 11 test(s)
-1..11
+ok 12 - cherry-pick works with dirty renamed file
+# passed all 12 test(s)
+1..12
 *** t3502-cherry-pick-merge.sh ***
 ok 1 - setup
 ok 2 - cherry-pick a non-merge with -m should fail
@@ -5293,55 +5652,57 @@
 ok 9 - --quit keeps HEAD and conflicted index intact
 ok 10 - --abort to cancel multiple cherry-pick
 ok 11 - --abort to cancel single cherry-pick
-ok 12 - cherry-pick --abort to cancel multiple revert
-ok 13 - revert --abort works, too
-ok 14 - --abort to cancel single revert
-ok 15 - --abort keeps unrelated change, easy case
-ok 16 - --abort refuses to clobber unrelated change, harder case
-ok 17 - cherry-pick still writes sequencer state when one commit is left
-ok 18 - --abort after last commit in sequence
-ok 19 - cherry-pick does not implicitly stomp an existing operation
-ok 20 - --continue complains when no cherry-pick is in progress
-ok 21 - --continue complains when there are unresolved conflicts
-ok 22 - --continue of single cherry-pick
-ok 23 - --continue of single revert
-ok 24 - --continue after resolving conflicts
-ok 25 - --continue after resolving conflicts and committing
-ok 26 - --continue asks for help after resolving patch to nil
-ok 27 - follow advice and skip nil patch
-ok 28 - --continue respects opts
-ok 29 - --continue of single-pick respects -x
-ok 30 - --continue respects -x in first commit in multi-pick
-not ok 31 - --signoff is automatically propagated to resolved conflict # TODO known breakage
-not ok 32 - --signoff dropped for implicit commit of resolution, multi-pick case # TODO known breakage
-not ok 33 - sign-off needs to be reaffirmed after conflict resolution, single-pick case # TODO known breakage
-ok 34 - malformed instruction sheet 1
-ok 35 - malformed instruction sheet 2
-ok 36 - empty commit set
-ok 37 - malformed instruction sheet 3
-ok 38 - instruction sheet, fat-fingers version
-ok 39 - commit descriptions in insn sheet are optional
+ok 12 - --abort does not unsafely change HEAD
+ok 13 - cherry-pick --abort to cancel multiple revert
+ok 14 - revert --abort works, too
+ok 15 - --abort to cancel single revert
+ok 16 - --abort keeps unrelated change, easy case
+ok 17 - --abort refuses to clobber unrelated change, harder case
+ok 18 - cherry-pick still writes sequencer state when one commit is left
+ok 19 - --abort after last commit in sequence
+ok 20 - cherry-pick does not implicitly stomp an existing operation
+ok 21 - --continue complains when no cherry-pick is in progress
+ok 22 - --continue complains when there are unresolved conflicts
+ok 23 - --continue of single cherry-pick
+ok 24 - --continue of single revert
+ok 25 - --continue after resolving conflicts
+ok 26 - --continue after resolving conflicts and committing
+ok 27 - --continue asks for help after resolving patch to nil
+ok 28 - follow advice and skip nil patch
+ok 29 - --continue respects opts
+ok 30 - --continue of single-pick respects -x
+ok 31 - --continue respects -x in first commit in multi-pick
+not ok 32 - --signoff is automatically propagated to resolved conflict # TODO known breakage
+not ok 33 - --signoff dropped for implicit commit of resolution, multi-pick case # TODO known breakage
+not ok 34 - sign-off needs to be reaffirmed after conflict resolution, single-pick case # TODO known breakage
+ok 35 - malformed instruction sheet 1
+ok 36 - malformed instruction sheet 2
+ok 37 - empty commit set
+ok 38 - malformed instruction sheet 3
+ok 39 - instruction sheet, fat-fingers version
+ok 40 - commit descriptions in insn sheet are optional
 # still have 3 known breakage(s)
-# passed all remaining 36 test(s)
-1..39
+# passed all remaining 37 test(s)
+1..40
 *** t3511-cherry-pick-x.sh ***
 ok 1 - setup
 ok 2 - cherry-pick -x inserts blank line after one line subject
 ok 3 - cherry-pick -s inserts blank line after one line subject
 ok 4 - cherry-pick -s inserts blank line after non-conforming footer
-ok 5 - cherry-pick -x inserts blank line when conforming footer not found
-ok 6 - cherry-pick -s inserts blank line when conforming footer not found
-ok 7 - cherry-pick -x -s inserts blank line when conforming footer not found
-ok 8 - cherry-pick -s adds sob when last sob doesnt match committer
-ok 9 - cherry-pick -x -s adds sob when last sob doesnt match committer
-ok 10 - cherry-pick -s refrains from adding duplicate trailing sob
-ok 11 - cherry-pick -x -s adds sob even when trailing sob exists for committer
-ok 12 - cherry-pick -x treats "(cherry picked from..." line as part of footer
-ok 13 - cherry-pick -s treats "(cherry picked from..." line as part of footer
-ok 14 - cherry-pick -x -s treats "(cherry picked from..." line as part of footer
-ok 15 - cherry-pick preserves commit message
-# passed all 15 test(s)
-1..15
+ok 5 - cherry-pick -s recognizes trailer config
+ok 6 - cherry-pick -x inserts blank line when conforming footer not found
+ok 7 - cherry-pick -s inserts blank line when conforming footer not found
+ok 8 - cherry-pick -x -s inserts blank line when conforming footer not found
+ok 9 - cherry-pick -s adds sob when last sob doesnt match committer
+ok 10 - cherry-pick -x -s adds sob when last sob doesnt match committer
+ok 11 - cherry-pick -s refrains from adding duplicate trailing sob
+ok 12 - cherry-pick -x -s adds sob even when trailing sob exists for committer
+ok 13 - cherry-pick -x treats "(cherry picked from..." line as part of footer
+ok 14 - cherry-pick -s treats "(cherry picked from..." line as part of footer
+ok 15 - cherry-pick -x -s treats "(cherry picked from..." line as part of footer
+ok 16 - cherry-pick preserves commit message
+# passed all 16 test(s)
+1..16
 *** t3512-cherry-pick-submodule.sh ***
 ok 1 - git cherry-pick: added submodule creates empty directory
 ok 2 - git cherry-pick: added submodule leaves existing empty directory alone
@@ -5436,7 +5797,7 @@
 ok 55 - rm of a conflicted populated submodule with untracked files fails unless forced
 ok 56 - rm of a conflicted populated submodule with a .git directory fails even when forced
 ok 57 - rm of a conflicted unpopulated submodule succeeds
-ok 58 - rm of a populated submodule with a .git directory fails even when forced
+ok 58 - rm of a populated submodule with a .git directory migrates git dir
 ok 59 - setup subsubmodule
 ok 60 - rm recursively removes work tree of unmodified submodules
 ok 61 - rm of a populated nested submodule with different nested HEAD fails unless forced
@@ -5457,9 +5818,10 @@
 ok 76 - rm file with changes in the index
 ok 77 - rm file with changes in the index without hints
 ok 78 - rm files with two different errors
+ok 79 - rm empty string should invoke warning
 # still have 1 known breakage(s)
-# passed all remaining 77 test(s)
-1..78
+# passed all remaining 78 test(s)
+1..79
 *** t3700-add.sh ***
 ok 1 - Test of git add
 ok 2 - Post-check that foo is in the index
@@ -5498,8 +5860,16 @@
 ok 35 - git add --dry-run of an existing file output
 ok 36 - git add --dry-run --ignore-missing of non-existing file
 ok 37 - git add --dry-run --ignore-missing of non-existing file output
-# passed all 37 test(s)
-1..37
+ok 38 - git add empty string should invoke warning
+ok 39 - git add --chmod=[+-]x stages correctly
+ok 40 - git add --chmod=+x with symlinks
+ok 41 - git add --chmod=[+-]x changes index with already added file
+ok 42 - git add --chmod=[+-]x does not change the working tree
+ok 43 - no file status change if no pathspec is given
+ok 44 - no file status change if no pathspec is given in subdir
+ok 45 - all statuses changed in folder if . is given
+# passed all 45 test(s)
+1..45
 *** t3701-add-interactive.sh ***
 ok 1 - setup (initial)
 ok 2 - status works (initial)
@@ -5538,9 +5908,10 @@
 ok 35 - split hunk "add -p (edit)"
 not ok 36 - split hunk "add -p (no, yes, edit)" # TODO known breakage
 ok 37 - patch mode ignores unmerged entries
+ok 38 - diffs can be colorized
 # still have 1 known breakage(s)
-# passed all remaining 36 test(s)
-1..37
+# passed all remaining 37 test(s)
+1..38
 *** t3702-add-edit.sh ***
 ok 1 - setup
 ok 2 - add -e
@@ -5673,57 +6044,60 @@
 ok 9 - stash drop complains of extra options
 ok 10 - drop top stash
 ok 11 - drop middle stash
-ok 12 - stash pop
-ok 13 - stash branch
-ok 14 - apply -q is quiet
-ok 15 - save -q is quiet
-ok 16 - pop -q is quiet
-ok 17 - pop -q --index works and is quiet
-ok 18 - drop -q is quiet
-ok 19 - stash -k
-ok 20 - stash --no-keep-index
-ok 21 - stash --invalid-option
-ok 22 - stash an added file
-ok 23 - stash rm then recreate
-ok 24 - stash rm and ignore
-ok 25 - stash rm and ignore (stage .gitignore)
-ok 26 - stash file to symlink
-ok 27 - stash file to symlink (stage rm)
-ok 28 - stash file to symlink (full stage)
-ok 29 - stash symlink to file
-ok 30 - this must have re-created the symlink
-ok 31 - unstash must re-create the file
-ok 32 - stash symlink to file (stage rm)
-ok 33 - this must have re-created the symlink
-ok 34 - unstash must re-create the file
-ok 35 - stash symlink to file (full stage)
-ok 36 - this must have re-created the symlink
-ok 37 - unstash must re-create the file
-not ok 38 - stash directory to file # TODO known breakage
-not ok 39 - stash file to directory # TODO known breakage
-ok 40 - stash branch - no stashes on stack, stash-like argument
-ok 41 - stash branch - stashes on stack, stash-like argument
-ok 42 - stash show format defaults to --stat
-ok 43 - stash show - stashes on stack, stash-like argument
-ok 44 - stash show -p - stashes on stack, stash-like argument
-ok 45 - stash show - no stashes on stack, stash-like argument
-ok 46 - stash show -p - no stashes on stack, stash-like argument
-ok 47 - stash drop - fail early if specified stash is not a stash reference
-ok 48 - stash pop - fail early if specified stash is not a stash reference
-ok 49 - ref with non-existent reflog
-ok 50 - invalid ref of the form [email protected]{n}, n >= N
-ok 51 - stash branch should not drop the stash if the branch exists
-ok 52 - stash apply shows status same as git status (relative to current directory)
-ok 53 - stash where working directory contains "HEAD" file
-ok 54 - store called with invalid commit
-ok 55 - store updates stash ref and reflog
-ok 56 - handle stash specification with spaces
-ok 57 - setup stash with index and worktree changes
-ok 58 - stash list implies --first-parent -m
-ok 59 - stash list --cc shows combined diff
+ok 12 - drop middle stash by index
+ok 13 - stash pop
+ok 14 - stash branch
+ok 15 - apply -q is quiet
+ok 16 - save -q is quiet
+ok 17 - pop -q is quiet
+ok 18 - pop -q --index works and is quiet
+ok 19 - drop -q is quiet
+ok 20 - stash -k
+ok 21 - stash --no-keep-index
+ok 22 - stash --invalid-option
+ok 23 - stash an added file
+ok 24 - stash rm then recreate
+ok 25 - stash rm and ignore
+ok 26 - stash rm and ignore (stage .gitignore)
+ok 27 - stash file to symlink
+ok 28 - stash file to symlink (stage rm)
+ok 29 - stash file to symlink (full stage)
+ok 30 - stash symlink to file
+ok 31 - this must have re-created the symlink
+ok 32 - unstash must re-create the file
+ok 33 - stash symlink to file (stage rm)
+ok 34 - this must have re-created the symlink
+ok 35 - unstash must re-create the file
+ok 36 - stash symlink to file (full stage)
+ok 37 - this must have re-created the symlink
+ok 38 - unstash must re-create the file
+not ok 39 - stash directory to file # TODO known breakage
+not ok 40 - stash file to directory # TODO known breakage
+ok 41 - stash branch - no stashes on stack, stash-like argument
+ok 42 - stash branch - stashes on stack, stash-like argument
+ok 43 - stash show format defaults to --stat
+ok 44 - stash show - stashes on stack, stash-like argument
+ok 45 - stash show -p - stashes on stack, stash-like argument
+ok 46 - stash show - no stashes on stack, stash-like argument
+ok 47 - stash show -p - no stashes on stack, stash-like argument
+ok 48 - stash drop - fail early if specified stash is not a stash reference
+ok 49 - stash pop - fail early if specified stash is not a stash reference
+ok 50 - ref with non-existent reflog
+ok 51 - invalid ref of the form [email protected]{n}, n >= N
+ok 52 - invalid ref of the form "n", n >= N
+ok 53 - stash branch should not drop the stash if the branch exists
+ok 54 - stash apply shows status same as git status (relative to current directory)
+ok 55 - stash where working directory contains "HEAD" file
+ok 56 - store called with invalid commit
+ok 57 - store updates stash ref and reflog
+ok 58 - handle stash specification with spaces
+ok 59 - setup stash with index and worktree changes
+ok 60 - stash list implies --first-parent -m
+ok 61 - stash list --cc shows combined diff
+ok 62 - stash is not confused by partial renames
 # still have 2 known breakage(s)
-# passed all remaining 57 test(s)
-1..59
+# passed all remaining 60 test(s)
+1..62
 *** t3904-stash-patch.sh ***
 ok 1 - setup
 ok 2 - saying "n" does nothing
@@ -5785,21 +6159,26 @@
 # passed all 8 test(s)
 1..8
 *** t4001-diff-rename.sh ***
-ok 1 - update-index --add a file.
-ok 2 - write that tree.
-ok 3 - renamed and edited the file.
-ok 4 - git diff-index -p -M after rename and editing.
-ok 5 - validate the output.
-ok 6 - favour same basenames over different ones
-ok 7 - favour same basenames even with minor differences
-ok 8 - setup for many rename source candidates
-ok 9 - rename pretty print with nothing in common
-ok 10 - rename pretty print with common prefix
-ok 11 - rename pretty print with common suffix
-ok 12 - rename pretty print with common prefix and suffix
-ok 13 - rename pretty print common prefix and suffix overlap
-# passed all 13 test(s)
-1..13
+ok 1 - setup
+ok 2 - update-index --add a file.
+ok 3 - write that tree.
+ok 4 - renamed and edited the file.
+ok 5 - git diff-index -p -M after rename and editing.
+ok 6 - validate the output.
+ok 7 - test diff.renames=true
+ok 8 - test diff.renames=false
+ok 9 - test diff.renames unset
+ok 10 - favour same basenames over different ones
+ok 11 - favour same basenames even with minor differences
+ok 12 - two files with same basename and same content
+ok 13 - setup for many rename source candidates
+ok 14 - rename pretty print with nothing in common
+ok 15 - rename pretty print with common prefix
+ok 16 - rename pretty print with common suffix
+ok 17 - rename pretty print with common prefix and suffix
+ok 18 - rename pretty print common prefix and suffix overlap
+# passed all 18 test(s)
+1..18
 *** t4002-diff-basic.sh ***
 ok 1 - adding test file NN and Z/NN
 ok 2 - adding test file ND and Z/ND
@@ -6125,15 +6504,23 @@
 ok 138 - git diff --no-index --name-status -- dir2 dir
 ok 139 - git diff --no-index dir dir3
 ok 140 - git diff master master^ side
-ok 141 - git diff --dirstat master~1 master~2
-ok 142 - git diff --dirstat initial rearrange
-ok 143 - git diff --dirstat-by-file initial rearrange
-ok 144 - log -S requires an argument
-ok 145 - diff --cached on unborn branch
-ok 146 - diff --cached -- file on unborn branch
-ok 147 - diff-tree --stdin with log formatting
-# passed all 147 test(s)
-1..147
+ok 141 - git diff --line-prefix=abc master master^ side
+ok 142 - git diff --dirstat master~1 master~2
+ok 143 - git diff --dirstat initial rearrange
+ok 144 - git diff --dirstat-by-file initial rearrange
+ok 145 - git diff --raw initial
+ok 146 - git diff --raw --abbrev=4 initial
+ok 147 - git diff --raw --no-abbrev initial
+ok 148 - git diff --no-index --raw dir2 dir
+ok 149 - git diff --no-index --raw --abbrev=4 dir2 dir
+ok 150 - git diff --no-index --raw --no-abbrev dir2 dir
+ok 151 - log -S requires an argument
+ok 152 - diff --cached on unborn branch
+ok 153 - diff --cached -- file on unborn branch
+ok 154 - diff --line-prefix with spaces
+ok 155 - diff-tree --stdin with log formatting
+# passed all 155 test(s)
+1..155
 *** t4014-format-patch.sh ***
 ok 1 - setup
 ok 2 - format-patch --ignore-if-in-upstream
@@ -6158,109 +6545,128 @@
 ok 21 - configuration To: header (ascii)
 not ok 22 - configuration To: header (rfc822) # TODO known breakage
 not ok 23 - configuration To: header (rfc2047) # TODO known breakage
-ok 24 - --no-to overrides config.to
-ok 25 - --no-to and --to replaces config.to
-ok 26 - --no-cc overrides config.cc
-ok 27 - --no-add-header overrides config.headers
-ok 28 - multiple files
-ok 29 - reroll count
-ok 30 - reroll count (-v)
-ok 31 - no threading
-ok 32 - thread
-ok 33 - thread in-reply-to
-ok 34 - thread cover-letter
-ok 35 - thread cover-letter in-reply-to
-ok 36 - thread explicit shallow
-ok 37 - thread deep
-ok 38 - thread deep in-reply-to
-ok 39 - thread deep cover-letter
-ok 40 - thread deep cover-letter in-reply-to
-ok 41 - thread via config
-ok 42 - thread deep via config
-ok 43 - thread config + override
-ok 44 - thread config + --no-thread
-ok 45 - excessive subject
-ok 46 - cover-letter inherits diff options
-ok 47 - shortlog of cover-letter wraps overly-long onelines
-ok 48 - format-patch respects -U
-ok 49 - format-patch -p suppresses stat
-ok 50 - format-patch from a subdirectory (1)
-ok 51 - format-patch from a subdirectory (2)
-ok 52 - format-patch from a subdirectory (3)
-ok 53 - format-patch --in-reply-to
-ok 54 - format-patch --signoff
-ok 55 - format-patch --notes --signoff
-ok 56 - options no longer allowed for format-patch
-ok 57 - format-patch --numstat should produce a patch
-ok 58 - format-patch -- <path>
-ok 59 - format-patch --ignore-if-in-upstream HEAD
-ok 60 - format-patch --signature
-ok 61 - format-patch with format.signature config
-ok 62 - format-patch --signature overrides format.signature
-ok 63 - format-patch --no-signature ignores format.signature
-ok 64 - format-patch --signature --cover-letter
-ok 65 - format.signature="" suppresses signatures
-ok 66 - format-patch --no-signature suppresses signatures
-ok 67 - format-patch --signature="" suppresses signatures
-ok 68 - prepare mail-signature input
-ok 69 - --signature-file=file works
-ok 70 - format.signaturefile works
-ok 71 - --no-signature suppresses format.signaturefile 
-ok 72 - --signature-file overrides format.signaturefile
-ok 73 - --signature overrides format.signaturefile
-ok 74 # skip format-patch --stdout paginates (missing TTY)
-ok 75 # skip format-patch --stdout pagination can be disabled (missing TTY)
-ok 76 - format-patch handles multi-line subjects
-ok 77 - format-patch handles multi-line encoded subjects
-ok 78 - format-patch wraps extremely long subject (ascii)
-ok 79 - format-patch wraps extremely long subject (rfc2047)
-ok 80 - format-patch quotes dot in from-headers
-ok 81 - format-patch quotes double-quote in from-headers
-ok 82 - format-patch uses rfc2047-encoded from-headers when necessary
-ok 83 - rfc2047-encoded from-headers leave no rfc822 specials
-ok 84 - format-patch wraps moderately long from-header (ascii)
-ok 85 - format-patch wraps extremely long from-header (ascii)
-ok 86 - format-patch wraps extremely long from-header (rfc822)
-ok 87 - format-patch wraps extremely long from-header (rfc2047)
-ok 88 - subject lines do not have 822 atom-quoting
-ok 89 - subject prefixes have space prepended
-ok 90 - empty subject prefix does not have extra space
-ok 91 - --from=ident notices bogus ident
-ok 92 - --from=ident replaces author
-ok 93 - --from uses committer ident
-ok 94 - --from omits redundant in-body header
-ok 95 - in-body headers trigger content encoding
-ok 96 - signoff: commit with no body
-ok 97 - signoff: commit with only subject
-ok 98 - signoff: commit with only subject that does not end with NL
-ok 99 - signoff: no existing signoffs
-ok 100 - signoff: no existing signoffs and no trailing NL
-ok 101 - signoff: some random signoff
-ok 102 - signoff: misc conforming footer elements
-ok 103 - signoff: some random signoff-alike
-ok 104 - signoff: not really a signoff
-ok 105 - signoff: not really a signoff (2)
-ok 106 - signoff: valid S-o-b paragraph in the middle
-ok 107 - signoff: the same signoff at the end
-ok 108 - signoff: the same signoff at the end, no trailing NL
-ok 109 - signoff: the same signoff NOT at the end
-ok 110 - signoff: detect garbage in non-conforming footer
-ok 111 - signoff: footer begins with non-signoff without @ sign
-ok 112 - format patch ignores color.ui
-ok 113 - cover letter using branch description (1)
-ok 114 - cover letter using branch description (2)
-ok 115 - cover letter using branch description (3)
-ok 116 - cover letter using branch description (4)
-ok 117 - cover letter using branch description (5)
-ok 118 - cover letter using branch description (6)
-ok 119 - cover letter with nothing
-ok 120 - cover letter auto
-ok 121 - cover letter auto user override
-ok 122 - format-patch --zero-commit
-ok 123 - From line has expected format
+ok 24 - format.from=false
+ok 25 - format.from=true
+ok 26 - format.from with address
+ok 27 - --no-from overrides format.from
+ok 28 - --from overrides format.from
+ok 29 - --no-to overrides config.to
+ok 30 - --no-to and --to replaces config.to
+ok 31 - --no-cc overrides config.cc
+ok 32 - --no-add-header overrides config.headers
+ok 33 - multiple files
+ok 34 - reroll count
+ok 35 - reroll count (-v)
+ok 36 - no threading
+ok 37 - thread
+ok 38 - thread in-reply-to
+ok 39 - thread cover-letter
+ok 40 - thread cover-letter in-reply-to
+ok 41 - thread explicit shallow
+ok 42 - thread deep
+ok 43 - thread deep in-reply-to
+ok 44 - thread deep cover-letter
+ok 45 - thread deep cover-letter in-reply-to
+ok 46 - thread via config
+ok 47 - thread deep via config
+ok 48 - thread config + override
+ok 49 - thread config + --no-thread
+ok 50 - excessive subject
+ok 51 - cover-letter inherits diff options
+ok 52 - shortlog of cover-letter wraps overly-long onelines
+ok 53 - format-patch respects -U
+ok 54 - format-patch -p suppresses stat
+ok 55 - format-patch from a subdirectory (1)
+ok 56 - format-patch from a subdirectory (2)
+ok 57 - format-patch from a subdirectory (3)
+ok 58 - format-patch --in-reply-to
+ok 59 - format-patch --signoff
+ok 60 - format-patch --notes --signoff
+ok 61 - options no longer allowed for format-patch
+ok 62 - format-patch --numstat should produce a patch
+ok 63 - format-patch -- <path>
+ok 64 - format-patch --ignore-if-in-upstream HEAD
+ok 65 - format-patch default signature
+ok 66 - format-patch --signature
+ok 67 - format-patch with format.signature config
+ok 68 - format-patch --signature overrides format.signature
+ok 69 - format-patch --no-signature ignores format.signature
+ok 70 - format-patch --signature --cover-letter
+ok 71 - format.signature="" suppresses signatures
+ok 72 - format-patch --no-signature suppresses signatures
+ok 73 - format-patch --signature="" suppresses signatures
+ok 74 - prepare mail-signature input
+ok 75 - --signature-file=file works
+ok 76 - format.signaturefile works
+ok 77 - --no-signature suppresses format.signaturefile 
+ok 78 - --signature-file overrides format.signaturefile
+ok 79 - --signature overrides format.signaturefile
+ok 80 # skip format-patch --stdout paginates (missing TTY)
+ok 81 # skip format-patch --stdout pagination can be disabled (missing TTY)
+ok 82 - format-patch handles multi-line subjects
+ok 83 - format-patch handles multi-line encoded subjects
+ok 84 - format-patch wraps extremely long subject (ascii)
+ok 85 - format-patch wraps extremely long subject (rfc2047)
+ok 86 - format-patch quotes dot in from-headers
+ok 87 - format-patch quotes double-quote in from-headers
+ok 88 - format-patch uses rfc2047-encoded from-headers when necessary
+ok 89 - rfc2047-encoded from-headers leave no rfc822 specials
+ok 90 - format-patch wraps moderately long from-header (ascii)
+ok 91 - format-patch wraps extremely long from-header (ascii)
+ok 92 - format-patch wraps extremely long from-header (rfc822)
+ok 93 - format-patch wraps extremely long from-header (rfc2047)
+ok 94 - subject lines do not have 822 atom-quoting
+ok 95 - subject prefixes have space prepended
+ok 96 - empty subject prefix does not have extra space
+ok 97 - --rfc
+ok 98 - --from=ident notices bogus ident
+ok 99 - --from=ident replaces author
+ok 100 - --from uses committer ident
+ok 101 - --from omits redundant in-body header
+ok 102 - in-body headers trigger content encoding
+ok 103 - signoff: commit with no body
+ok 104 - signoff: commit with only subject
+ok 105 - signoff: commit with only subject that does not end with NL
+ok 106 - signoff: no existing signoffs
+ok 107 - signoff: no existing signoffs and no trailing NL
+ok 108 - signoff: some random signoff
+ok 109 - signoff: misc conforming footer elements
+ok 110 - signoff: some random signoff-alike
+ok 111 - signoff: not really a signoff
+ok 112 - signoff: not really a signoff (2)
+ok 113 - signoff: valid S-o-b paragraph in the middle
+ok 114 - signoff: the same signoff at the end
+ok 115 - signoff: the same signoff at the end, no trailing NL
+ok 116 - signoff: the same signoff NOT at the end
+ok 117 - signoff: tolerate garbage in conforming footer
+ok 118 - signoff: respect trailer config
+ok 119 - signoff: footer begins with non-signoff without @ sign
+ok 120 - format patch ignores color.ui
+ok 121 - cover letter using branch description (1)
+ok 122 - cover letter using branch description (2)
+ok 123 - cover letter using branch description (3)
+ok 124 - cover letter using branch description (4)
+ok 125 - cover letter using branch description (5)
+ok 126 - cover letter using branch description (6)
+ok 127 - cover letter with nothing
+ok 128 - cover letter auto
+ok 129 - cover letter auto user override
+ok 130 - format-patch --zero-commit
+ok 131 - From line has expected format
+ok 132 - format-patch format.outputDirectory option
+ok 133 - format-patch -o overrides format.outputDirectory
+ok 134 - format-patch --base
+ok 135 - format-patch --base errors out when base commit is in revision list
+ok 136 - format-patch --base errors out when base commit is not ancestor of revision list
+ok 137 - format-patch --base=auto
+ok 138 - format-patch errors out when history involves criss-cross
+ok 139 - format-patch format.useAutoBaseoption
+ok 140 - format-patch --base overrides format.useAutoBase
+ok 141 - format-patch --base with --attach
+ok 142 - format-patch --pretty=mboxrd
 # still have 5 known breakage(s)
-# passed all remaining 118 test(s)
-1..123
+# passed all remaining 137 test(s)
+1..142
 *** t4015-diff-whitespace.sh ***
 ok 1 - Ray Lehtiniemi's example
 ok 2 - another test, without options
@@ -6319,9 +6725,12 @@
 ok 55 - setup diff colors
 ok 56 - diff that introduces a line with only tabs
 ok 57 - diff that introduces and removes ws breakages
-ok 58 - the same with --ws-error-highlight
-# passed all 58 test(s)
-1..58
+ok 58 - ws-error-highlight test setup
+ok 59 - test --ws-error-highlight option
+ok 60 - test diff.wsErrorHighlight config
+ok 61 - option overrides diff.wsErrorHighlight
+# passed all 61 test(s)
+1..61
 *** t4016-diff-quote.sh ***
 ok 1 - setup
 ok 2 - setup expected files
@@ -6367,72 +6776,82 @@
 ok 7 - builtin cpp wordRegex pattern compiles
 ok 8 - builtin csharp pattern compiles
 ok 9 - builtin csharp wordRegex pattern compiles
-ok 10 - builtin fortran pattern compiles
-ok 11 - builtin fortran wordRegex pattern compiles
-ok 12 - builtin fountain pattern compiles
-ok 13 - builtin fountain wordRegex pattern compiles
-ok 14 - builtin html pattern compiles
-ok 15 - builtin html wordRegex pattern compiles
-ok 16 - builtin java pattern compiles
-ok 17 - builtin java wordRegex pattern compiles
-ok 18 - builtin matlab pattern compiles
-ok 19 - builtin matlab wordRegex pattern compiles
-ok 20 - builtin objc pattern compiles
-ok 21 - builtin objc wordRegex pattern compiles
-ok 22 - builtin pascal pattern compiles
-ok 23 - builtin pascal wordRegex pattern compiles
-ok 24 - builtin perl pattern compiles
-ok 25 - builtin perl wordRegex pattern compiles
-ok 26 - builtin php pattern compiles
-ok 27 - builtin php wordRegex pattern compiles
-ok 28 - builtin python pattern compiles
-ok 29 - builtin python wordRegex pattern compiles
-ok 30 - builtin ruby pattern compiles
-ok 31 - builtin ruby wordRegex pattern compiles
-ok 32 - builtin tex pattern compiles
-ok 33 - builtin tex wordRegex pattern compiles
-ok 34 - builtin custom1 pattern compiles
-ok 35 - builtin custom1 wordRegex pattern compiles
-ok 36 - builtin custom2 pattern compiles
-ok 37 - builtin custom2 wordRegex pattern compiles
-ok 38 - builtin custom3 pattern compiles
-ok 39 - builtin custom3 wordRegex pattern compiles
-ok 40 - last regexp must not be negated
-ok 41 - setup hunk header tests
-ok 42 - hunk header: README
-ok 43 - hunk header: cpp-c++-function
-ok 44 - hunk header: cpp-class-constructor
-ok 45 - hunk header: cpp-class-constructor-mem-init
-ok 46 - hunk header: cpp-class-definition
-ok 47 - hunk header: cpp-class-definition-derived
-ok 48 - hunk header: cpp-class-destructor
-ok 49 - hunk header: cpp-function-returning-global-type
-ok 50 - hunk header: cpp-function-returning-nested
-ok 51 - hunk header: cpp-function-returning-pointer
-ok 52 - hunk header: cpp-function-returning-reference
-ok 53 - hunk header: cpp-gnu-style-function
-ok 54 - hunk header: cpp-namespace-definition
-ok 55 - hunk header: cpp-operator-definition
-ok 56 - hunk header: cpp-skip-access-specifiers
-ok 57 - hunk header: cpp-skip-comment-block
-ok 58 - hunk header: cpp-skip-labels
-ok 59 - hunk header: cpp-struct-definition
-ok 60 - hunk header: cpp-struct-single-line
-ok 61 - hunk header: cpp-template-function-definition
-ok 62 - hunk header: cpp-union-definition
-ok 63 - hunk header: cpp-void-c-function
-ok 64 - hunk header: custom1-pattern
-ok 65 - hunk header: custom2-match-to-end-of-line
-ok 66 - hunk header: custom3-alternation-in-pattern
-ok 67 - hunk header: fountain-scene
-ok 68 - hunk header: java-class-member-function
-ok 69 - hunk header: perl-skip-end-of-heredoc
-ok 70 - hunk header: perl-skip-forward-decl
-ok 71 - hunk header: perl-skip-sub-in-pod
-ok 72 - hunk header: perl-sub-definition
-ok 73 - hunk header: perl-sub-definition-kr-brace
-# passed all 73 test(s)
-1..73
+ok 10 - builtin css pattern compiles
+ok 11 - builtin css wordRegex pattern compiles
+ok 12 - builtin fortran pattern compiles
+ok 13 - builtin fortran wordRegex pattern compiles
+ok 14 - builtin fountain pattern compiles
+ok 15 - builtin fountain wordRegex pattern compiles
+ok 16 - builtin html pattern compiles
+ok 17 - builtin html wordRegex pattern compiles
+ok 18 - builtin java pattern compiles
+ok 19 - builtin java wordRegex pattern compiles
+ok 20 - builtin matlab pattern compiles
+ok 21 - builtin matlab wordRegex pattern compiles
+ok 22 - builtin objc pattern compiles
+ok 23 - builtin objc wordRegex pattern compiles
+ok 24 - builtin pascal pattern compiles
+ok 25 - builtin pascal wordRegex pattern compiles
+ok 26 - builtin perl pattern compiles
+ok 27 - builtin perl wordRegex pattern compiles
+ok 28 - builtin php pattern compiles
+ok 29 - builtin php wordRegex pattern compiles
+ok 30 - builtin python pattern compiles
+ok 31 - builtin python wordRegex pattern compiles
+ok 32 - builtin ruby pattern compiles
+ok 33 - builtin ruby wordRegex pattern compiles
+ok 34 - builtin tex pattern compiles
+ok 35 - builtin tex wordRegex pattern compiles
+ok 36 - builtin custom1 pattern compiles
+ok 37 - builtin custom1 wordRegex pattern compiles
+ok 38 - builtin custom2 pattern compiles
+ok 39 - builtin custom2 wordRegex pattern compiles
+ok 40 - builtin custom3 pattern compiles
+ok 41 - builtin custom3 wordRegex pattern compiles
+ok 42 - last regexp must not be negated
+ok 43 - setup hunk header tests
+ok 44 - hunk header: README
+ok 45 - hunk header: cpp-c++-function
+ok 46 - hunk header: cpp-class-constructor
+ok 47 - hunk header: cpp-class-constructor-mem-init
+ok 48 - hunk header: cpp-class-definition
+ok 49 - hunk header: cpp-class-definition-derived
+ok 50 - hunk header: cpp-class-destructor
+ok 51 - hunk header: cpp-function-returning-global-type
+ok 52 - hunk header: cpp-function-returning-nested
+ok 53 - hunk header: cpp-function-returning-pointer
+ok 54 - hunk header: cpp-function-returning-reference
+ok 55 - hunk header: cpp-gnu-style-function
+ok 56 - hunk header: cpp-namespace-definition
+ok 57 - hunk header: cpp-operator-definition
+ok 58 - hunk header: cpp-skip-access-specifiers
+ok 59 - hunk header: cpp-skip-comment-block
+ok 60 - hunk header: cpp-skip-labels
+ok 61 - hunk header: cpp-struct-definition
+ok 62 - hunk header: cpp-struct-single-line
+ok 63 - hunk header: cpp-template-function-definition
+ok 64 - hunk header: cpp-union-definition
+ok 65 - hunk header: cpp-void-c-function
+ok 66 - hunk header: css-brace-in-col-1
+ok 67 - hunk header: css-colon-eol
+ok 68 - hunk header: css-colon-selector
+ok 69 - hunk header: css-common
+ok 70 - hunk header: css-long-selector-list
+ok 71 - hunk header: css-prop-sans-indent
+ok 72 - hunk header: css-short-selector-list
+ok 73 - hunk header: css-trailing-space
+ok 74 - hunk header: custom1-pattern
+ok 75 - hunk header: custom2-match-to-end-of-line
+ok 76 - hunk header: custom3-alternation-in-pattern
+ok 77 - hunk header: fountain-scene
+ok 78 - hunk header: java-class-member-function
+ok 79 - hunk header: perl-skip-end-of-heredoc
+ok 80 - hunk header: perl-skip-forward-decl
+ok 81 - hunk header: perl-skip-sub-in-pod
+ok 82 - hunk header: perl-sub-definition
+ok 83 - hunk header: perl-sub-definition-kr-brace
+# passed all 83 test(s)
+1..83
 *** t4019-diff-wserror.sh ***
 ok 1 - setup
 ok 2 - default
@@ -6498,8 +6917,10 @@
 ok 10 - format.numbered = auto && single patch
 ok 11 - format.numbered = auto && --no-numbered
 ok 12 - --start-number && --numbered
-# passed all 12 test(s)
-1..12
+ok 13 - single patch with cover-letter defaults to numbers
+ok 14 - Use --no-numbered and --cover-letter single patch
+# passed all 14 test(s)
+1..14
 *** t4022-diff-rewrite.sh ***
 ok 1 - setup
 ok 2 - detect rewrite
@@ -6533,30 +6954,32 @@
 1..2
 *** t4026-color.sh ***
 ok 1 - reset
-ok 2 - attribute before color name
-ok 3 - color name before attribute
-ok 4 - attr fg bg
-ok 5 - fg attr bg
-ok 6 - fg bg attr
-ok 7 - fg bg attr...
-ok 8 - attr negation
-ok 9 - long color specification
-ok 10 - absurdly long color specification
-ok 11 - 0-7 are aliases for basic ANSI color names
-ok 12 - 256 colors
-ok 13 - 24-bit colors
-ok 14 - "normal" yields no color at all"
-ok 15 - -1 is a synonym for "normal"
-ok 16 - color too small
-ok 17 - color too big
-ok 18 - extra character after color number
-ok 19 - extra character after color name
-ok 20 - extra character after attribute
-ok 21 - unknown color slots are ignored (diff)
-ok 22 - unknown color slots are ignored (branch)
-ok 23 - unknown color slots are ignored (status)
-# passed all 23 test(s)
-1..23
+ok 2 - empty color is empty
+ok 3 - attribute before color name
+ok 4 - color name before attribute
+ok 5 - attr fg bg
+ok 6 - fg attr bg
+ok 7 - fg bg attr
+ok 8 - fg bg attr...
+ok 9 - attr negation
+ok 10 - "no-" variant of negation
+ok 11 - long color specification
+ok 12 - absurdly long color specification
+ok 13 - 0-7 are aliases for basic ANSI color names
+ok 14 - 256 colors
+ok 15 - 24-bit colors
+ok 16 - "normal" yields no color at all"
+ok 17 - -1 is a synonym for "normal"
+ok 18 - color too small
+ok 19 - color too big
+ok 20 - extra character after color number
+ok 21 - extra character after color name
+ok 22 - extra character after attribute
+ok 23 - unknown color slots are ignored (diff)
+ok 24 - unknown color slots are ignored (branch)
+ok 25 - unknown color slots are ignored (status)
+# passed all 25 test(s)
+1..25
 *** t4027-diff-submodule.sh ***
 ok 1 - setup
 ok 2 - git diff --raw HEAD
@@ -6647,14 +7070,31 @@
 ok 19 - diff -U3, 9 common lines: count hunks (2)
 ok 20 - diff -U3 --inter-hunk-context=2, 9 common lines: count hunks (2)
 ok 21 - diff -U3 --inter-hunk-context=3, 9 common lines: count hunks (1)
-# passed all 21 test(s)
-1..21
+ok 22 - (diff.interHunkContext=0) diff -U0, 1 common line: count hunks (2)
+ok 23 - (diff.interHunkContext=0) diff -U0, 1 common line: check output
+ok 24 - (diff.interHunkContext=1) diff -U0, 1 common line: count hunks (1)
+ok 25 - (diff.interHunkContext=1) diff -U0, 1 common line: check output
+ok 26 - (diff.interHunkContext=2) diff -U0, 1 common line: count hunks (1)
+ok 27 - (diff.interHunkContext=2) diff -U0, 1 common line: check output
+ok 28 - (diff.interHunkContext=3) diff -U3, 9 common lines: count hunks (1)
+ok 29 - (diff.interHunkContext=0) diff -U0, 2 common lines: count hunks (2)
+ok 30 - (diff.interHunkContext=1) diff -U0, 2 common lines: count hunks (2)
+ok 31 - (diff.interHunkContext=2) diff -U0, 2 common lines: count hunks (1)
+ok 32 - (diff.interHunkContext=0) diff -U1, 3 common lines: count hunks (2)
+ok 33 - (diff.interHunkContext=1) diff -U1, 3 common lines: count hunks (1)
+ok 34 - (diff.interHunkContext=2) diff -U1, 3 common lines: count hunks (1)
+ok 35 - (diff.interHunkContext=2) diff -U3, 9 common lines: count hunks (2)
+ok 36 - (diff.interHunkContext=3) diff -U3, 9 common lines: count hunks (1)
+ok 37 - diff.interHunkContext invalid
+# passed all 37 test(s)
+1..37
 *** t4033-diff-patience.sh ***
-ok 1 - patience diff
-ok 2 - patience diff output is valid
-ok 3 - completely different files
-# passed all 3 test(s)
-1..3
+ok 1 - --ignore-space-at-eol with a single appended character
+ok 2 - patience diff
+ok 3 - patience diff output is valid
+ok 4 - completely different files
+# passed all 4 test(s)
+1..4
 *** t4034-diff-words.sh ***
 ok 1 - setup
 ok 2 - set up pre and post with runs of whitespace
@@ -6681,23 +7121,24 @@
 ok 23 - diff driver 'bibtex'
 ok 24 - diff driver 'cpp'
 ok 25 - diff driver 'csharp'
-ok 26 - diff driver 'fortran'
-ok 27 - diff driver 'html'
-ok 28 - diff driver 'java'
-ok 29 - diff driver 'matlab'
-ok 30 - diff driver 'objc'
-ok 31 - diff driver 'pascal'
-ok 32 - diff driver 'perl'
-ok 33 - diff driver 'php'
-ok 34 - diff driver 'python'
-ok 35 - diff driver 'ruby'
-ok 36 - diff driver 'tex'
-ok 37 - word-diff with diff.sbe
-ok 38 - word-diff with no newline at EOF
-ok 39 - setup history with two files
-ok 40 - wordRegex for the first file does not apply to the second
-# passed all 40 test(s)
-1..40
+ok 26 - diff driver 'css'
+ok 27 - diff driver 'fortran'
+ok 28 - diff driver 'html'
+ok 29 - diff driver 'java'
+ok 30 - diff driver 'matlab'
+ok 31 - diff driver 'objc'
+ok 32 - diff driver 'pascal'
+ok 33 - diff driver 'perl'
+ok 34 - diff driver 'php'
+ok 35 - diff driver 'python'
+ok 36 - diff driver 'ruby'
+ok 37 - diff driver 'tex'
+ok 38 - word-diff with diff.sbe
+ok 39 - word-diff with no newline at EOF
+ok 40 - setup history with two files
+ok 41 - wordRegex for the first file does not apply to the second
+# passed all 41 test(s)
+1..41
 *** t4035-diff-quiet.sh ***
 ok 1 - setup
 ok 2 - git diff-tree HEAD^ HEAD
@@ -6945,10 +7386,48 @@
 1..3
 *** t4051-diff-function-context.sh ***
 ok 1 - setup
-ok 2 - diff -U0 -W
-ok 3 - diff -W
-# passed all 3 test(s)
-1..3
+ok 2 - changed function
+ok 3 -  diff applies
+ok 4 -  context includes begin
+ok 5 -  context includes end
+ok 6 -  context does not include other functions
+ok 7 -  context does not include preceding empty lines
+ok 8 -  context does not include trailing empty lines
+ok 9 - changed includes
+ok 10 -  diff applies
+ok 11 -  context includes begin
+ok 12 -  context includes end
+ok 13 -  context does not include other functions
+ok 14 -  context does not include trailing empty lines
+ok 15 - appended function
+ok 16 -  diff applies
+ok 17 -  context includes begin
+ok 18 -  context includes end
+ok 19 -  context does not include other functions
+ok 20 - appended function part
+ok 21 -  diff applies
+ok 22 -  context includes begin
+ok 23 -  context includes end
+ok 24 -  context does not include other functions
+ok 25 -  context does not include preceding empty lines
+ok 26 - change with long common tail and no context
+ok 27 -  diff applies
+ok 28 -  context includes begin
+ok 29 -  context includes end
+ok 30 -  context does not include other functions
+ok 31 -  context does not include preceding empty lines
+ok 32 - changed function plus appended function
+ok 33 -  diff applies
+ok 34 -  context includes begin
+ok 35 -  context includes end
+ok 36 -  context does not include other functions
+ok 37 - changed two consecutive functions
+ok 38 -  diff applies
+ok 39 -  context includes begin
+ok 40 -  context includes end
+ok 41 -  overlapping hunks are merged
+# passed all 41 test(s)
+1..41
 *** t4052-stat-output.sh ***
 ok 1 - preparation
 ok 2 - format-patch: small change with long name gives more space to the name
@@ -7038,8 +7517,12 @@
 ok 6 - git diff --no-index executed outside repo gives correct error message
 ok 7 - diff D F and diff F D
 ok 8 - turning a file into a directory
-# passed all 8 test(s)
-1..8
+ok 9 - diff from repo subdir shows real paths (explicit)
+ok 10 - diff from repo subdir shows real paths (implicit)
+ok 11 - diff --no-index from repo subdir respects config (explicit)
+ok 12 - diff --no-index from repo subdir respects config (implicit)
+# passed all 12 test(s)
+1..12
 *** t4054-diff-bogus-tree.sh ***
 ok 1 - create bogus tree
 ok 2 - create tree with matching file
@@ -7102,6 +7585,83 @@
 ok 3 - diff-tree with renames
 # passed all 3 test(s)
 1..3
+*** t4059-diff-submodule-not-initialized.sh ***
+ok 1 - setup - submodules
+ok 2 - setup - git submodule add
+ok 3 - submodule directory removed
+ok 4 - setup - submodule multiple commits
+ok 5 - submodule removed multiple commits
+ok 6 - submodule not initialized in new clone
+ok 7 - setup submodule moved
+ok 8 - submodule moved then removed
+# passed all 8 test(s)
+1..8
+*** t4060-diff-submodule-option-diff-format.sh ***
+ok 1 - setup repository
+ok 2 - added submodule
+ok 3 - added submodule, set diff.submodule
+ok 4 - --submodule=short overrides diff.submodule
+ok 5 - diff.submodule does not affect plumbing
+ok 6 - modified submodule(forward)
+ok 7 - modified submodule(forward)
+ok 8 - modified submodule(forward) --submodule
+ok 9 - modified submodule(forward) --submodule=short
+ok 10 - modified submodule(backward)
+ok 11 - modified submodule(backward and forward)
+ok 12 - typechanged submodule(submodule->blob), --cached
+ok 13 - typechanged submodule(submodule->blob)
+ok 14 - typechanged submodule(submodule->blob)
+ok 15 - nonexistent commit
+ok 16 - typechanged submodule(blob->submodule)
+ok 17 - submodule is up to date
+ok 18 - submodule contains untracked content
+ok 19 - submodule contains untracked content (untracked ignored)
+ok 20 - submodule contains untracked content (dirty ignored)
+ok 21 - submodule contains untracked content (all ignored)
+ok 22 - submodule contains untracked and modified content
+ok 23 - submodule contains untracked and modified content (untracked ignored)
+ok 24 - submodule contains untracked and modified content (dirty ignored)
+ok 25 - submodule contains untracked and modified content (all ignored)
+ok 26 - submodule contains modified content
+ok 27 - submodule is modified
+ok 28 - modified submodule contains untracked content
+ok 29 - modified submodule contains untracked content (untracked ignored)
+ok 30 - modified submodule contains untracked content (dirty ignored)
+ok 31 - modified submodule contains untracked content (all ignored)
+ok 32 - modified submodule contains untracked and modified content
+ok 33 - modified submodule contains untracked and modified content (untracked ignored)
+ok 34 - modified submodule contains untracked and modified content (dirty ignored)
+ok 35 - modified submodule contains untracked and modified content (all ignored)
+ok 36 - modified submodule contains modified content
+ok 37 - deleted submodule
+ok 38 - multiple submodules
+ok 39 - path filter
+ok 40 - given commit
+ok 41 - setup .git file for sm2
+ok 42 - diff --submodule=diff with .git file
+# passed all 42 test(s)
+1..42
+*** t4061-diff-indent.sh ***
+ok 1 - prepare
+ok 2 - diff: ugly spaces
+ok 3 - diff: nice spaces with --indent-heuristic
+ok 4 - diff: nice spaces with diff.indentHeuristic
+ok 5 - diff: --no-indent-heuristic overrides config
+ok 6 - diff: --indent-heuristic with --patience
+ok 7 - diff: --indent-heuristic with --histogram
+ok 8 - diff: ugly functions
+ok 9 - diff: nice functions with --indent-heuristic
+ok 10 - blame: ugly spaces
+ok 11 - blame: nice spaces with --indent-heuristic
+ok 12 - blame: nice spaces with diff.indentHeuristic
+ok 13 - blame: --no-indent-heuristic overrides config
+# passed all 13 test(s)
+1..13
+*** t4062-diff-pickaxe.sh ***
+ok 1 - setup
+ok 2 - -G matches
+# passed all 2 test(s)
+1..2
 *** t4100-apply-stat.sh ***
 ok 1 - rename
 ok 2 - rename with recount
@@ -7678,8 +8238,10 @@
 ok 60 - am --message-id -s signs off after the message id
 ok 61 - am -3 works with rerere
 ok 62 - am -s unexpected trailer block
-# passed all 62 test(s)
-1..62
+ok 63 - am --patch-format=mboxrd handles mboxrd
+ok 64 - am works with multi-line in-body headers
+# passed all 64 test(s)
+1..64
 *** t4151-am-abort.sh ***
 ok 1 - setup
 ok 2 - am stops at a patch that does not apply
@@ -7737,22 +8299,26 @@
 ok 9 - first postimage wins
 ok 10 - rerere updates postimage timestamp
 ok 11 - rerere clear
-ok 12 - set up for garbage collection tests
-ok 13 - gc preserves young or recently used records
-ok 14 - old records rest in peace
-ok 15 - setup: file2 added differently in two branches
-ok 16 - resolution was recorded properly
-ok 17 - rerere.autoupdate
-ok 18 - merge --rerere-autoupdate
-ok 19 - merge --no-rerere-autoupdate
-ok 20 - set up an unresolved merge
-ok 21 - explicit rerere
-ok 22 - explicit rerere with autoupdate
-ok 23 - explicit rerere --rerere-autoupdate overrides
-ok 24 - rerere --no-no-rerere-autoupdate
-ok 25 - rerere -h
-# passed all 25 test(s)
-1..25
+ok 12 - leftover directory
+ok 13 - missing preimage
+ok 14 - set up for garbage collection tests
+ok 15 - gc preserves young or recently used records
+ok 16 - old records rest in peace
+ok 17 - setup: file2 added differently in two branches
+ok 18 - resolution was recorded properly
+ok 19 - rerere.autoupdate
+ok 20 - merge --rerere-autoupdate
+ok 21 - merge --no-rerere-autoupdate
+ok 22 - set up an unresolved merge
+ok 23 - explicit rerere
+ok 24 - explicit rerere with autoupdate
+ok 25 - explicit rerere --rerere-autoupdate overrides
+ok 26 - rerere --no-no-rerere-autoupdate
+ok 27 - rerere -h
+ok 28 - rerere gc
+ok 29 - multiple identical conflicts
+# passed all 29 test(s)
+1..29
 *** t4201-shortlog.sh ***
 ok 1 - setup
 ok 2 - default output format
@@ -7761,12 +8327,15 @@
 ok 5 - output from user-defined format is re-wrapped
 ok 6 - shortlog wrapping
 ok 7 - shortlog from non-git directory
-ok 8 - shortlog should add newline when input line matches wraplen
-ok 9 - shortlog encoding
-ok 10 - shortlog ignores commits with missing authors
+ok 8 - shortlog can read --format=raw output
+ok 9 - shortlog should add newline when input line matches wraplen
+ok 10 - shortlog encoding
 ok 11 - shortlog with revision pseudo options
-# passed all 11 test(s)
-1..11
+ok 12 - shortlog with --output=<file>
+ok 13 - shortlog --committer (internal)
+ok 14 - shortlog --committer (external)
+# passed all 14 test(s)
+1..14
 *** t4202-log.sh ***
 ok 1 - setup
 ok 2 - pretty
@@ -7788,41 +8357,55 @@
 ok 18 - git config log.follow is overridden by --no-follow
 ok 19 - git log --no-walk <commits> sorts by commit time
 ok 20 - git log --no-walk=sorted <commits> sorts by commit time
-ok 21 - git log --no-walk=unsorted <commits> leaves list of commits as given
-ok 22 - git show <commits> leaves list of commits as given
-ok 23 - setup case sensitivity tests
-ok 24 - log --grep
-ok 25 - log --invert-grep --grep
-ok 26 - log --invert-grep --grep -i
-ok 27 - log --grep option parsing
-ok 28 - log -i --grep
-ok 29 - log --grep -i
-ok 30 - log -F -E --grep=<ere> uses ere
-ok 31 - simple log --graph
-ok 32 - set up merge history
-ok 33 - log --graph with merge
-ok 34 - log --raw --graph -m with merge
-ok 35 - diff-tree --graph
-ok 36 - log --graph with full output
-ok 37 - set up more tangled history
-ok 38 - log --graph with merge
-ok 39 - log.decorate configuration
-ok 40 - reflog is expected format
-ok 41 - whatchanged is expected format
-ok 42 - log.abbrevCommit configuration
-ok 43 - show added path under "--follow -M"
-ok 44 - git log -c --follow
-ok 45 - log --graph with diff and stats
-ok 46 - dotdot is a parent directory
-ok 47 - log --graph --show-signature
-ok 48 - log --graph --show-signature for merged tag
-ok 49 - log --graph --no-walk is forbidden
-ok 50 - log diagnoses bogus HEAD
-ok 51 - set up --source tests
-ok 52 - log --source paints branch names
-ok 53 - log --source paints tag names
-# passed all 53 test(s)
-1..53
+ok 21 - git log --line-prefix="=== " --no-walk <commits> sorts by commit time
+ok 22 - git log --no-walk=unsorted <commits> leaves list of commits as given
+ok 23 - git show <commits> leaves list of commits as given
+ok 24 - setup case sensitivity tests
+ok 25 - log --grep
+ok 26 - log --invert-grep --grep
+ok 27 - log --invert-grep --grep -i
+ok 28 - log --grep option parsing
+ok 29 - log -i --grep
+ok 30 - log --grep -i
+ok 31 - log -F -E --grep=<ere> uses ere
+ok 32 - log with grep.patternType configuration
+ok 33 - log with grep.patternType configuration and command line
+ok 34 - simple log --graph
+ok 35 - simple log --graph --line-prefix="123 "
+ok 36 - set up merge history
+ok 37 - log --graph with merge
+ok 38 - log --graph --line-prefix="| | | " with merge
+ok 39 - log --graph with merge with log.graphColors
+ok 40 - log --raw --graph -m with merge
+ok 41 - diff-tree --graph
+ok 42 - log --graph with full output
+ok 43 - set up more tangled history
+ok 44 - log --graph with merge
+ok 45 - log.decorate configuration
+ok 46 - reflog is expected format
+ok 47 - whatchanged is expected format
+ok 48 - log.abbrevCommit configuration
+ok 49 - show added path under "--follow -M"
+ok 50 - git log -c --follow
+ok 51 - log --graph with diff and stats
+ok 52 - log --line-prefix="*** " --graph with diff and stats
+ok 53 - log --graph with --name-status
+ok 54 - log --graph with --name-only
+ok 55 - dotdot is a parent directory
+ok 56 - setup signed branch
+ok 57 - log --graph --show-signature
+ok 58 - log --graph --show-signature for merged tag
+ok 59 - --no-show-signature overrides --show-signature
+ok 60 - log.showsignature=true behaves like --show-signature
+ok 61 - --no-show-signature overrides log.showsignature=true
+ok 62 - --show-signature overrides log.showsignature=false
+ok 63 - log --graph --no-walk is forbidden
+ok 64 - log diagnoses bogus HEAD
+ok 65 - set up --source tests
+ok 66 - log --source paints branch names
+ok 67 - log --source paints tag names
+# passed all 67 test(s)
+1..67
 *** t4203-mailmap.sh ***
 ok 1 - setup
 ok 2 - check-mailmap no arguments
@@ -7875,9 +8458,10 @@
 ok 12 - --unstable overrides patchid.stable = true
 ok 13 - --stable overrides patchid.stable = false
 ok 14 - patch-id supports git-format-patch MIME output
-ok 15 - patch-id handles no-nl-at-eof markers
-# passed all 15 test(s)
-1..15
+ok 15 - patch-id respects config from subdir
+ok 16 - patch-id handles no-nl-at-eof markers
+# passed all 16 test(s)
+1..16
 *** t4205-log-pretty-formats.sh ***
 ok 1 - set up basic repos
 ok 2 - alias builtin format
@@ -7898,36 +8482,43 @@
 ok 17 - left alignment formatting
 ok 18 - left alignment formatting. i18n.logOutputEncoding
 ok 19 - left alignment formatting at the nth column
-ok 20 - left alignment formatting at the nth column. i18n.logOutputEncoding
-ok 21 - left alignment formatting with no padding
-ok 22 - left alignment formatting with no padding. i18n.logOutputEncoding
-ok 23 - left alignment formatting with trunc
-ok 24 - left alignment formatting with trunc. i18n.logOutputEncoding
-ok 25 - left alignment formatting with ltrunc
-ok 26 - left alignment formatting with ltrunc. i18n.logOutputEncoding
-ok 27 - left alignment formatting with mtrunc
-ok 28 - left alignment formatting with mtrunc. i18n.logOutputEncoding
-ok 29 - right alignment formatting
-ok 30 - right alignment formatting. i18n.logOutputEncoding
-ok 31 - right alignment formatting at the nth column
-ok 32 - right alignment formatting at the nth column. i18n.logOutputEncoding
-ok 33 - right alignment formatting with no padding
-ok 34 - right alignment formatting with no padding. i18n.logOutputEncoding
-ok 35 - center alignment formatting
-ok 36 - center alignment formatting. i18n.logOutputEncoding
-ok 37 - center alignment formatting at the nth column
-ok 38 - center alignment formatting at the nth column. i18n.logOutputEncoding
-ok 39 - center alignment formatting with no padding
-ok 40 - center alignment formatting with no padding. i18n.logOutputEncoding
-ok 41 - left/right alignment formatting with stealing
-ok 42 - left/right alignment formatting with stealing. i18n.logOutputEncoding
-ok 43 - strbuf_utf8_replace() not producing NUL
-ok 44 - ISO and ISO-strict date formats display the same values
-ok 45 - log decoration properly follows tag chain
-ok 46 - clean log decoration
+ok 20 - left alignment formatting at the nth column
+ok 21 - left alignment formatting at the nth column. i18n.logOutputEncoding
+ok 22 - left alignment formatting with no padding
+ok 23 - left alignment formatting with no padding. i18n.logOutputEncoding
+ok 24 - left alignment formatting with trunc
+ok 25 - left alignment formatting with trunc. i18n.logOutputEncoding
+ok 26 - left alignment formatting with ltrunc
+ok 27 - left alignment formatting with ltrunc. i18n.logOutputEncoding
+ok 28 - left alignment formatting with mtrunc
+ok 29 - left alignment formatting with mtrunc. i18n.logOutputEncoding
+ok 30 - right alignment formatting
+ok 31 - right alignment formatting. i18n.logOutputEncoding
+ok 32 - right alignment formatting at the nth column
+ok 33 - right alignment formatting at the nth column
+ok 34 - right alignment formatting at the nth column. i18n.logOutputEncoding
+ok 35 - right alignment formatting at the nth column with --graph. i18n.logOutputEncoding
+ok 36 - right alignment formatting with no padding
+ok 37 - right alignment formatting with no padding and with --graph
+ok 38 - right alignment formatting with no padding. i18n.logOutputEncoding
+ok 39 - center alignment formatting
+ok 40 - center alignment formatting. i18n.logOutputEncoding
+ok 41 - center alignment formatting at the nth column
+ok 42 - center alignment formatting at the nth column
+ok 43 - center alignment formatting at the nth column. i18n.logOutputEncoding
+ok 44 - center alignment formatting with no padding
+ok 45 - center alignment formatting with no padding. i18n.logOutputEncoding
+ok 46 - left/right alignment formatting with stealing
+ok 47 - left/right alignment formatting with stealing. i18n.logOutputEncoding
+ok 48 - strbuf_utf8_replace() not producing NUL
+ok 49 - ISO and ISO-strict date formats display the same values
+ok 50 - set up log decoration tests
+ok 51 - log decoration properly follows tag chain
+ok 52 - clean log decoration
+ok 53 - pretty format %(trailers) shows trailers
 # still have 1 known breakage(s)
-# passed all remaining 45 test(s)
-1..46
+# passed all remaining 52 test(s)
+1..53
 *** t4206-log-follow-harder-copies.sh ***
 ok 1 - add a file path0 and commit.
 ok 2 - Change path0.
@@ -8035,8 +8626,9 @@
 ok 33 - -L ,Y (Y == nlines + 1)
 ok 34 - -L ,Y (Y == nlines + 2)
 ok 35 - -L with --first-parent and a merge
-# passed all 35 test(s)
-1..35
+ok 36 - -L with --output
+# passed all 36 test(s)
+1..36
 *** t4212-log-corrupt.sh ***
 ok 1 - setup
 ok 2 - fsck notices broken commit
@@ -8049,6 +8641,18 @@
 ok 9 - absurdly far-in-future date
 # passed all 9 test(s)
 1..9
+*** t4213-log-tabexpand.sh ***
+ok 1 - setup
+ok 2 - expand/no-expand
+ok 3 - expand/no-expand for --pretty
+ok 4 - expand/no-expand for --pretty=short
+ok 5 - expand/no-expand for --pretty=medium
+ok 6 - expand/no-expand for --pretty=full
+ok 7 - expand/no-expand for --pretty=fuller
+ok 8 - expand/no-expand for --pretty=raw
+ok 9 - expand/no-expand for --pretty=email
+# passed all 9 test(s)
+1..9
 *** t4252-am-options.sh ***
 ok 1 - setup
 ok 2 - interrupted am --whitespace=fix
@@ -8163,31 +8767,39 @@
 ok 24 - git archive vs. the same in a bare repo
 ok 25 - git archive with --output
 ok 26 - git archive --remote
-ok 27 - validate file modification time
-ok 28 - git get-tar-commit-id
-ok 29 - git archive with --output, override inferred format
-ok 30 - git archive --list outside of a git repo
-ok 31 - clients cannot access unreachable commits
-ok 32 - upload-archive can allow unreachable commits
-ok 33 - setup tar filters
-ok 34 - archive --list mentions user filter
-ok 35 - archive --list shows only enabled remote filters
-ok 36 - invoke tar filter by format
-ok 37 - invoke tar filter by extension
-ok 38 - default output format remains tar
-ok 39 - extension matching requires dot
-ok 40 - only enabled filters are available remotely
-ok 41 - git archive --format=tgz
-ok 42 - git archive --format=tar.gz
-ok 43 - infer tgz from .tgz filename
-ok 44 - infer tgz from .tar.gz filename
-ok 45 - extract tgz file
-ok 46 - remote tar.gz is allowed by default
-ok 47 - remote tar.gz can be disabled
-ok 48 - archive and :(glob)
-ok 49 - catch non-matching pathspec
-# passed all 49 test(s)
-1..49
+ok 27 - git archive --remote with configured remote
+ok 28 - validate file modification time
+ok 29 - git get-tar-commit-id
+ok 30 - git archive with --output, override inferred format
+ok 31 - git archive --list outside of a git repo
+ok 32 - git archive --remote outside of a git repo
+ok 33 - clients cannot access unreachable commits
+ok 34 - upload-archive can allow unreachable commits
+ok 35 - setup tar filters
+ok 36 - archive --list mentions user filter
+ok 37 - archive --list shows only enabled remote filters
+ok 38 - invoke tar filter by format
+ok 39 - invoke tar filter by extension
+ok 40 - default output format remains tar
+ok 41 - extension matching requires dot
+ok 42 - only enabled filters are available remotely
+ok 43 - git archive --format=tgz
+ok 44 - git archive --format=tar.gz
+ok 45 - infer tgz from .tgz filename
+ok 46 - infer tgz from .tar.gz filename
+ok 47 - extract tgz file
+ok 48 - remote tar.gz is allowed by default
+ok 49 - remote tar.gz can be disabled
+ok 50 - archive and :(glob)
+ok 51 - catch non-matching pathspec
+ok 52 - set up repository with huge blob
+ok 53 - generate tar with huge size
+ok 54 - system tar can read our huge size
+ok 55 - set up repository with far-future commit
+ok 56 - generate tar with future mtime
+ok 57 - system tar can read our future mtime
+# passed all 57 test(s)
+1..57
 *** t5001-archive-attr.sh ***
 ok 1 - setup
 ok 2 - git archive
@@ -8250,39 +8862,43 @@
 ok 15 -  validate that binary files are unchanged
 ok 16 -  validate that diff files are converted
 ok 17 -  validate that -diff files are unchanged
-ok 18 - git archive --format=zip in a bare repo
-ok 19 - git archive --format=zip vs. the same in a bare repo
-ok 20 - git archive --format=zip with --output
-ok 21 - git archive with --output, inferring format
-ok 22 - git archive --format=zip with prefix
-ok 23 -  extract ZIP archive
-ok 24 -  validate filenames
-ok 25 -  validate file contents
-ok 26 -  extract ZIP archive with EOL conversion
-ok 27 -  validate that text files are converted
-ok 28 -  validate that binary files are unchanged
-ok 29 -  validate that diff files are converted
-ok 30 -  validate that -diff files are unchanged
-ok 31 - git archive -0 --format=zip on large files
-ok 32 -  extract ZIP archive
-ok 33 -  validate filenames
-ok 34 -  validate file contents
-ok 35 -  extract ZIP archive with EOL conversion
-ok 36 -  validate that text files are converted
-ok 37 -  validate that binary files are unchanged
-ok 38 -  validate that diff files are converted
-ok 39 -  validate that -diff files are unchanged
-ok 40 - git archive --format=zip on large files
-ok 41 -  extract ZIP archive
-ok 42 -  validate filenames
-ok 43 -  validate file contents
-ok 44 -  extract ZIP archive with EOL conversion
-ok 45 -  validate that text files are converted
-ok 46 -  validate that binary files are unchanged
-ok 47 -  validate that diff files are converted
-ok 48 -  validate that -diff files are unchanged
-# passed all 48 test(s)
-1..48
+ok 18 -  validate that custom diff is unchanged 
+ok 19 - git archive --format=zip in a bare repo
+ok 20 - git archive --format=zip vs. the same in a bare repo
+ok 21 - git archive --format=zip with --output
+ok 22 - git archive with --output, inferring format
+ok 23 - git archive --format=zip with prefix
+ok 24 -  extract ZIP archive
+ok 25 -  validate filenames
+ok 26 -  validate file contents
+ok 27 -  extract ZIP archive with EOL conversion
+ok 28 -  validate that text files are converted
+ok 29 -  validate that binary files are unchanged
+ok 30 -  validate that diff files are converted
+ok 31 -  validate that -diff files are unchanged
+ok 32 -  validate that custom diff is unchanged 
+ok 33 - git archive -0 --format=zip on large files
+ok 34 -  extract ZIP archive
+ok 35 -  validate filenames
+ok 36 -  validate file contents
+ok 37 -  extract ZIP archive with EOL conversion
+ok 38 -  validate that text files are converted
+ok 39 -  validate that binary files are unchanged
+ok 40 -  validate that diff files are converted
+ok 41 -  validate that -diff files are unchanged
+ok 42 -  validate that custom diff is unchanged 
+ok 43 - git archive --format=zip on large files
+ok 44 -  extract ZIP archive
+ok 45 -  validate filenames
+ok 46 -  validate file contents
+ok 47 -  extract ZIP archive with EOL conversion
+ok 48 -  validate that text files are converted
+ok 49 -  validate that binary files are unchanged
+ok 50 -  validate that diff files are converted
+ok 51 -  validate that -diff files are unchanged
+ok 52 -  validate that custom diff is unchanged 
+# passed all 52 test(s)
+1..52
 *** t5004-archive-corner-cases.sh ***
 ok 1 - create commit with empty tree
 ok 2 - tar archive of commit with empty tree
@@ -8316,25 +8932,30 @@
 ok 16 - mailinfo 0015
 ok 17 - mailinfo 0016
 ok 18 - mailinfo 0017
-ok 19 - split box with rfc2047 samples
-ok 20 - mailinfo rfc2047/0001
-ok 21 - mailinfo rfc2047/0002
-ok 22 - mailinfo rfc2047/0003
-ok 23 - mailinfo rfc2047/0004
-ok 24 - mailinfo rfc2047/0005
-ok 25 - mailinfo rfc2047/0006
-ok 26 - mailinfo rfc2047/0007
-ok 27 - mailinfo rfc2047/0008
-ok 28 - mailinfo rfc2047/0009
-ok 29 - mailinfo rfc2047/0010
-ok 30 - mailinfo rfc2047/0011
-ok 31 - respect NULs
-ok 32 - Preserve NULs out of MIME encoded message
-ok 33 - mailinfo on from header without name works
-ok 34 - mailinfo finds headers after embedded From line
-ok 35 - mailinfo on message with quoted >From
-# passed all 35 test(s)
-1..35
+ok 19 - mailinfo 0018
+ok 20 - split box with rfc2047 samples
+ok 21 - mailinfo rfc2047/0001
+ok 22 - mailinfo rfc2047/0002
+ok 23 - mailinfo rfc2047/0003
+ok 24 - mailinfo rfc2047/0004
+ok 25 - mailinfo rfc2047/0005
+ok 26 - mailinfo rfc2047/0006
+ok 27 - mailinfo rfc2047/0007
+ok 28 - mailinfo rfc2047/0008
+ok 29 - mailinfo rfc2047/0009
+ok 30 - mailinfo rfc2047/0010
+ok 31 - mailinfo rfc2047/0011
+ok 32 - respect NULs
+ok 33 - Preserve NULs out of MIME encoded message
+ok 34 - mailinfo on from header without name works
+ok 35 - mailinfo finds headers after embedded From line
+ok 36 - mailinfo on message with quoted >From
+ok 37 - mailinfo unescapes with --mboxrd
+ok 38 - mailinfo handles rfc2822 quoted-string
+ok 39 - mailinfo handles rfc2822 comment
+ok 40 - mailinfo with mailinfo.scissors config
+# passed all 40 test(s)
+1..40
 *** t5150-request-pull.sh ***
 ok 1 - setup
 ok 2 - setup: two scripts for reading pull requests
@@ -8376,11 +8997,14 @@
 ok 28 - verify resulting packs
 ok 29 - tolerate packsizelimit smaller than biggest object
 ok 30 - verify resulting packs
-ok 31 - fake a SHA1 hash collision
-ok 32 - make sure index-pack detects the SHA1 collision
-ok 33 - make sure index-pack detects the SHA1 collision (large blobs)
-# passed all 33 test(s)
-1..33
+ok 31 - set up pack for non-repo tests
+ok 32 - index-pack --stdin complains of non-repo
+ok 33 - index-pack <pack> works in non-repo
+ok 34 - fake a SHA1 hash collision
+ok 35 - make sure index-pack detects the SHA1 collision
+ok 36 - make sure index-pack detects the SHA1 collision (large blobs)
+# passed all 36 test(s)
+1..36
 *** t5301-sliding-window.sh ***
 ok 1 - setup
 ok 2 - verify-pack -v, defaults
@@ -8488,8 +9112,16 @@
 ok 5 - pack with --include-tag
 ok 6 - unpack objects
 ok 7 - check unpacked result (have commit, have tag)
-# passed all 7 test(s)
-1..7
+ok 8 - create hidden inner tag
+ok 9 - pack explicit outer tag
+ok 10 - unpack objects
+ok 11 - check unpacked result (have all objects)
+ok 12 - pack implied outer tag
+ok 13 - unpack objects
+ok 14 - check unpacked result (have all objects)
+ok 15 - single-branch clone can transfer tag
+# passed all 15 test(s)
+1..15
 *** t5306-pack-nobase.sh ***
 ok 1 - setup base
 ok 2 - setup patch_clone
@@ -8530,32 +9162,41 @@
 ok 3 - rev-list --test-bitmap verifies bitmaps
 ok 4 - counting commits via bitmap (full bitmap)
 ok 5 - counting partial commits via bitmap (full bitmap)
-ok 6 - counting non-linear history (full bitmap)
-ok 7 - counting commits with limiting (full bitmap)
-ok 8 - enumerate --objects (full bitmap)
-ok 9 - bitmap --objects handles non-commit objects (full bitmap)
-ok 10 - clone from bitmapped repository
-ok 11 - setup further non-bitmapped commits
-ok 12 - counting commits via bitmap (partial bitmap)
-ok 13 - counting partial commits via bitmap (partial bitmap)
-ok 14 - counting non-linear history (partial bitmap)
-ok 15 - counting commits with limiting (partial bitmap)
-ok 16 - enumerate --objects (partial bitmap)
-ok 17 - bitmap --objects handles non-commit objects (partial bitmap)
-ok 18 - fetch (partial bitmap)
-ok 19 - incremental repack cannot create bitmaps
-ok 20 - incremental repack can disable bitmaps
-ok 21 - full repack, reusing previous bitmaps
-ok 22 - fetch (full bitmap)
-ok 23 - create objects for missing-HAVE tests
-ok 24 - pack with missing blob
-ok 25 - pack with missing tree
-ok 26 - pack with missing parent
-ok 27 # skip we can read jgit bitmaps (missing JGIT)
-ok 28 # skip jgit can read our bitmaps (missing JGIT)
-ok 29 - splitting packs does not generate bogus bitmaps
-# passed all 29 test(s)
-1..29
+ok 6 - counting commits with limit (full bitmap)
+ok 7 - counting non-linear history (full bitmap)
+ok 8 - counting commits with limiting (full bitmap)
+ok 9 - enumerate --objects (full bitmap)
+ok 10 - bitmap --objects handles non-commit objects (full bitmap)
+ok 11 - clone from bitmapped repository
+ok 12 - setup further non-bitmapped commits
+ok 13 - counting commits via bitmap (partial bitmap)
+ok 14 - counting partial commits via bitmap (partial bitmap)
+ok 15 - counting commits with limit (partial bitmap)
+ok 16 - counting non-linear history (partial bitmap)
+ok 17 - counting commits with limiting (partial bitmap)
+ok 18 - enumerate --objects (partial bitmap)
+ok 19 - bitmap --objects handles non-commit objects (partial bitmap)
+ok 20 - fetch (partial bitmap)
+ok 21 - incremental repack fails when bitmaps are requested
+ok 22 - incremental repack can disable bitmaps
+ok 23 - pack-objects respects --local (non-local loose)
+ok 24 - pack-objects respects --honor-pack-keep (local non-bitmapped pack)
+ok 25 - pack-objects respects --local (non-local pack)
+ok 26 - pack-objects respects --honor-pack-keep (local bitmapped pack)
+ok 27 - pack-objects respects --local (non-local bitmapped pack)
+ok 28 - pack-objects to file can use bitmap
+ok 29 - full repack, reusing previous bitmaps
+ok 30 - fetch (full bitmap)
+ok 31 - create objects for missing-HAVE tests
+ok 32 - pack-objects respects --incremental
+ok 33 - pack with missing blob
+ok 34 - pack with missing tree
+ok 35 - pack with missing parent
+ok 36 # skip we can read jgit bitmaps (missing JGIT)
+ok 37 # skip jgit can read our bitmaps (missing JGIT)
+ok 38 - splitting packs does not generate bogus bitmaps
+# passed all 38 test(s)
+1..38
 *** t5311-pack-bitmaps-shallow.sh ***
 ok 1 - setup shallow repo
 ok 2 - turn on bitmaps in the parent
@@ -8588,6 +9229,23 @@
 ok 8 - bogus OFS_DELTA in packfile
 # passed all 8 test(s)
 1..8
+*** t5314-pack-cycle-detection.sh ***
+ok 1 - setup
+ok 2 - repack
+# passed all 2 test(s)
+1..2
+*** t5315-pack-objects-compression.sh ***
+ok 1 - setup
+ok 2 - pack-objects with -c core.compression=0
+ok 3 - pack-objects with -c core.compression=9
+ok 4 - pack-objects with -c core.compression=0 -c pack.compression=0
+ok 5 - pack-objects with -c core.compression=9 -c pack.compression=0
+ok 6 - pack-objects with -c core.compression=0 -c pack.compression=9
+ok 7 - pack-objects with -c core.compression=9 -c pack.compression=9
+ok 8 - pack-objects with -c pack.compression=0
+ok 9 - pack-objects with -c pack.compression=9
+# passed all 9 test(s)
+1..9
 *** t5400-send-pack.sh ***
 ok 1 - setup
 ok 2 - pack the source repository
@@ -8598,13 +9256,14 @@
 ok 7 - cannot override denyDeletes with git -c send-pack
 ok 8 - override denyDeletes with git -c receive-pack
 ok 9 - denyNonFastforwards trumps --force
-ok 10 - push --all excludes remote-tracking hierarchy
-ok 11 - receive-pack runs auto-gc in remote repo
-ok 12 - pushing explicit refspecs respects forcing
-ok 13 - pushing wildcard refspecs respects forcing
-ok 14 - deny pushing to delete current branch
-# passed all 14 test(s)
-1..14
+ok 10 - send-pack --all sends all branches
+ok 11 - push --all excludes remote-tracking hierarchy
+ok 12 - receive-pack runs auto-gc in remote repo
+ok 13 - pushing explicit refspecs respects forcing
+ok 14 - pushing wildcard refspecs respects forcing
+ok 15 - deny pushing to delete current branch
+# passed all 15 test(s)
+1..15
 *** t5401-update-hooks.sh ***
 ok 1 - setup
 ok 2 - push
@@ -8749,292 +9408,298 @@
 ok 54 - test --all, --depth, and explicit head
 ok 55 - test --all, --depth, and explicit tag
 ok 56 - shallow fetch with tags does not break the repository
-ok 57 - fetch-pack --diag-url ssh+git://host/repo
-ok 58 - fetch-pack --diag-url ssh+git://host/~repo
-ok 59 - fetch-pack --diag-url ssh+git://host:/repo
-ok 60 - fetch-pack --diag-url ssh+git://host:/~repo
-ok 61 - fetch-pack --diag-url ssh+git://[email protected]/repo
-ok 62 - fetch-pack --diag-url ssh+git://[email protected]/~repo
-ok 63 - fetch-pack --diag-url ssh+git://[email protected]:/repo
-ok 64 - fetch-pack --diag-url ssh+git://[email protected]:/~repo
-ok 65 - fetch-pack --diag-url ssh+git://[email protected][::1]/repo
-ok 66 - fetch-pack --diag-url ssh+git://[email protected][::1]/~repo
-ok 67 - fetch-pack --diag-url ssh+git://[email protected][::1]:/repo
-ok 68 - fetch-pack --diag-url ssh+git://[email protected][::1]:/~repo
-ok 69 - fetch-pack --diag-url ssh+git://[email protected]::1/repo
-ok 70 - fetch-pack --diag-url ssh+git://[email protected]::1/~repo
-ok 71 - fetch-pack --diag-url ssh+git://[email protected]::1:/repo
-ok 72 - fetch-pack --diag-url ssh+git://[email protected]::1:/~repo
-ok 73 - fetch-pack --diag-url ssh+git://host:22/repo
-ok 74 - fetch-pack --diag-url ssh+git://[email protected]:22/repo
-ok 75 - fetch-pack --diag-url ssh+git://[email protected][::1]:22/repo
-ok 76 - fetch-pack --diag-url git+ssh://host/repo
-ok 77 - fetch-pack --diag-url git+ssh://host/~repo
-ok 78 - fetch-pack --diag-url git+ssh://host:/repo
-ok 79 - fetch-pack --diag-url git+ssh://host:/~repo
-ok 80 - fetch-pack --diag-url git+ssh://[email protected]/repo
-ok 81 - fetch-pack --diag-url git+ssh://[email protected]/~repo
-ok 82 - fetch-pack --diag-url git+ssh://[email protected]:/repo
-ok 83 - fetch-pack --diag-url git+ssh://[email protected]:/~repo
-ok 84 - fetch-pack --diag-url git+ssh://[email protected][::1]/repo
-ok 85 - fetch-pack --diag-url git+ssh://[email protected][::1]/~repo
-ok 86 - fetch-pack --diag-url git+ssh://[email protected][::1]:/repo
-ok 87 - fetch-pack --diag-url git+ssh://[email protected][::1]:/~repo
-ok 88 - fetch-pack --diag-url git+ssh://[email protected]::1/repo
-ok 89 - fetch-pack --diag-url git+ssh://[email protected]::1/~repo
-ok 90 - fetch-pack --diag-url git+ssh://[email protected]::1:/repo
-ok 91 - fetch-pack --diag-url git+ssh://[email protected]::1:/~repo
-ok 92 - fetch-pack --diag-url git+ssh://host:22/repo
-ok 93 - fetch-pack --diag-url git+ssh://[email protected]:22/repo
-ok 94 - fetch-pack --diag-url git+ssh://[email protected][::1]:22/repo
-ok 95 - fetch-pack --diag-url git://host/repo
-ok 96 - fetch-pack --diag-url git://host/~repo
-ok 97 - fetch-pack --diag-url git://host:/repo
-ok 98 - fetch-pack --diag-url git://host:/~repo
-ok 99 - fetch-pack --diag-url git://[email protected]/repo
-ok 100 - fetch-pack --diag-url git://[email protected]/~repo
-ok 101 - fetch-pack --diag-url git://[email protected]:/repo
-ok 102 - fetch-pack --diag-url git://[email protected]:/~repo
-ok 103 - fetch-pack --diag-url git://[email protected][::1]/repo
-ok 104 - fetch-pack --diag-url git://[email protected][::1]/~repo
-ok 105 - fetch-pack --diag-url git://[email protected][::1]:/repo
-ok 106 - fetch-pack --diag-url git://[email protected][::1]:/~repo
-ok 107 - fetch-pack --diag-url git://[email protected]::1/repo
-ok 108 - fetch-pack --diag-url git://[email protected]::1/~repo
-ok 109 - fetch-pack --diag-url git://[email protected]::1:/repo
-ok 110 - fetch-pack --diag-url git://[email protected]::1:/~repo
-ok 111 - fetch-pack --diag-url git://host:22/repo
-ok 112 - fetch-pack --diag-url git://[email protected]:22/repo
-ok 113 - fetch-pack --diag-url git://[email protected][::1]:22/repo
-ok 114 - fetch-pack --diag-url ssh://host/repo
-ok 115 - fetch-pack --diag-url ssh://host/~repo
-ok 116 - fetch-pack --diag-url ssh://host:/repo
-ok 117 - fetch-pack --diag-url ssh://host:/~repo
-ok 118 - fetch-pack --diag-url ssh://[email protected]/repo
-ok 119 - fetch-pack --diag-url ssh://[email protected]/~repo
-ok 120 - fetch-pack --diag-url ssh://[email protected]:/repo
-ok 121 - fetch-pack --diag-url ssh://[email protected]:/~repo
-ok 122 - fetch-pack --diag-url ssh://[email protected][::1]/repo
-ok 123 - fetch-pack --diag-url ssh://[email protected][::1]/~repo
-ok 124 - fetch-pack --diag-url ssh://[email protected][::1]:/repo
-ok 125 - fetch-pack --diag-url ssh://[email protected][::1]:/~repo
-ok 126 - fetch-pack --diag-url ssh://[email protected]::1/repo
-ok 127 - fetch-pack --diag-url ssh://[email protected]::1/~repo
-ok 128 - fetch-pack --diag-url ssh://[email protected]::1:/repo
-ok 129 - fetch-pack --diag-url ssh://[email protected]::1:/~repo
-ok 130 - fetch-pack --diag-url ssh://host:22/repo
-ok 131 - fetch-pack --diag-url ssh://[email protected]:22/repo
-ok 132 - fetch-pack --diag-url ssh://[email protected][::1]:22/repo
-ok 133 - fetch-pack --diag-url file://[email protected][::1]/repo
-ok 134 - fetch-pack --diag-url file://[email protected][::1]/~repo
-ok 135 - fetch-pack --diag-url ./nohost:repo
-ok 136 - fetch-pack --diag-url ./file:nohost/~repo
-ok 137 - fetch-pack --diag-url ./nohost:12:repo
-ok 138 - fetch-pack --diag-url ./file:nohost:12/~repo
-ok 139 - fetch-pack --diag-url ./[::1]:repo
-ok 140 - fetch-pack --diag-url ./file:[::1]/~repo
-ok 141 - fetch-pack --diag-url ./[::1]:23:repo
-ok 142 - fetch-pack --diag-url ./file:[::1]:23/~repo
-ok 143 - fetch-pack --diag-url ./[:repo
-ok 144 - fetch-pack --diag-url ./file:[/~repo
-ok 145 - fetch-pack --diag-url ./[:aa:repo
-ok 146 - fetch-pack --diag-url ./file:[:aa/~repo
-ok 147 - fetch-pack --diag-url host:repo
-ok 148 - fetch-pack --diag-url host:/~repo
-ok 149 - fetch-pack --diag-url [::1]:repo
-ok 150 - fetch-pack --diag-url [::1]:/~repo
-ok 151 - fetch-pack --diag-url ssh+git://host/re:po
-ok 152 - fetch-pack --diag-url ssh+git://host/~re:po
-ok 153 - fetch-pack --diag-url ssh+git://host:/re:po
-ok 154 - fetch-pack --diag-url ssh+git://host:/~re:po
-ok 155 - fetch-pack --diag-url ssh+git://[email protected]/re:po
-ok 156 - fetch-pack --diag-url ssh+git://[email protected]/~re:po
-ok 157 - fetch-pack --diag-url ssh+git://[email protected]:/re:po
-ok 158 - fetch-pack --diag-url ssh+git://[email protected]:/~re:po
-ok 159 - fetch-pack --diag-url ssh+git://[email protected][::1]/re:po
-ok 160 - fetch-pack --diag-url ssh+git://[email protected][::1]/~re:po
-ok 161 - fetch-pack --diag-url ssh+git://[email protected][::1]:/re:po
-ok 162 - fetch-pack --diag-url ssh+git://[email protected][::1]:/~re:po
-ok 163 - fetch-pack --diag-url ssh+git://[email protected]::1/re:po
-ok 164 - fetch-pack --diag-url ssh+git://[email protected]::1/~re:po
-ok 165 - fetch-pack --diag-url ssh+git://[email protected]::1:/re:po
-ok 166 - fetch-pack --diag-url ssh+git://[email protected]::1:/~re:po
-ok 167 - fetch-pack --diag-url ssh+git://host:22/re:po
-ok 168 - fetch-pack --diag-url ssh+git://[email protected]:22/re:po
-ok 169 - fetch-pack --diag-url ssh+git://[email protected][::1]:22/re:po
-ok 170 - fetch-pack --diag-url git+ssh://host/re:po
-ok 171 - fetch-pack --diag-url git+ssh://host/~re:po
-ok 172 - fetch-pack --diag-url git+ssh://host:/re:po
-ok 173 - fetch-pack --diag-url git+ssh://host:/~re:po
-ok 174 - fetch-pack --diag-url git+ssh://[email protected]/re:po
-ok 175 - fetch-pack --diag-url git+ssh://[email protected]/~re:po
-ok 176 - fetch-pack --diag-url git+ssh://[email protected]:/re:po
-ok 177 - fetch-pack --diag-url git+ssh://[email protected]:/~re:po
-ok 178 - fetch-pack --diag-url git+ssh://[email protected][::1]/re:po
-ok 179 - fetch-pack --diag-url git+ssh://[email protected][::1]/~re:po
-ok 180 - fetch-pack --diag-url git+ssh://[email protected][::1]:/re:po
-ok 181 - fetch-pack --diag-url git+ssh://[email protected][::1]:/~re:po
-ok 182 - fetch-pack --diag-url git+ssh://[email protected]::1/re:po
-ok 183 - fetch-pack --diag-url git+ssh://[email protected]::1/~re:po
-ok 184 - fetch-pack --diag-url git+ssh://[email protected]::1:/re:po
-ok 185 - fetch-pack --diag-url git+ssh://[email protected]::1:/~re:po
-ok 186 - fetch-pack --diag-url git+ssh://host:22/re:po
-ok 187 - fetch-pack --diag-url git+ssh://[email protected]:22/re:po
-ok 188 - fetch-pack --diag-url git+ssh://[email protected][::1]:22/re:po
-ok 189 - fetch-pack --diag-url git://host/re:po
-ok 190 - fetch-pack --diag-url git://host/~re:po
-ok 191 - fetch-pack --diag-url git://host:/re:po
-ok 192 - fetch-pack --diag-url git://host:/~re:po
-ok 193 - fetch-pack --diag-url git://[email protected]/re:po
-ok 194 - fetch-pack --diag-url git://[email protected]/~re:po
-ok 195 - fetch-pack --diag-url git://[email protected]:/re:po
-ok 196 - fetch-pack --diag-url git://[email protected]:/~re:po
-ok 197 - fetch-pack --diag-url git://[email protected][::1]/re:po
-ok 198 - fetch-pack --diag-url git://[email protected][::1]/~re:po
-ok 199 - fetch-pack --diag-url git://[email protected][::1]:/re:po
-ok 200 - fetch-pack --diag-url git://[email protected][::1]:/~re:po
-ok 201 - fetch-pack --diag-url git://[email protected]::1/re:po
-ok 202 - fetch-pack --diag-url git://[email protected]::1/~re:po
-ok 203 - fetch-pack --diag-url git://[email protected]::1:/re:po
-ok 204 - fetch-pack --diag-url git://[email protected]::1:/~re:po
-ok 205 - fetch-pack --diag-url git://host:22/re:po
-ok 206 - fetch-pack --diag-url git://[email protected]:22/re:po
-ok 207 - fetch-pack --diag-url git://[email protected][::1]:22/re:po
-ok 208 - fetch-pack --diag-url ssh://host/re:po
-ok 209 - fetch-pack --diag-url ssh://host/~re:po
-ok 210 - fetch-pack --diag-url ssh://host:/re:po
-ok 211 - fetch-pack --diag-url ssh://host:/~re:po
-ok 212 - fetch-pack --diag-url ssh://[email protected]/re:po
-ok 213 - fetch-pack --diag-url ssh://[email protected]/~re:po
-ok 214 - fetch-pack --diag-url ssh://[email protected]:/re:po
-ok 215 - fetch-pack --diag-url ssh://[email protected]:/~re:po
-ok 216 - fetch-pack --diag-url ssh://[email protected][::1]/re:po
-ok 217 - fetch-pack --diag-url ssh://[email protected][::1]/~re:po
-ok 218 - fetch-pack --diag-url ssh://[email protected][::1]:/re:po
-ok 219 - fetch-pack --diag-url ssh://[email protected][::1]:/~re:po
-ok 220 - fetch-pack --diag-url ssh://[email protected]::1/re:po
-ok 221 - fetch-pack --diag-url ssh://[email protected]::1/~re:po
-ok 222 - fetch-pack --diag-url ssh://[email protected]::1:/re:po
-ok 223 - fetch-pack --diag-url ssh://[email protected]::1:/~re:po
-ok 224 - fetch-pack --diag-url ssh://host:22/re:po
-ok 225 - fetch-pack --diag-url ssh://[email protected]:22/re:po
-ok 226 - fetch-pack --diag-url ssh://[email protected][::1]:22/re:po
-ok 227 - fetch-pack --diag-url file://[email protected][::1]/re:po
-ok 228 - fetch-pack --diag-url file://[email protected][::1]/~re:po
-ok 229 - fetch-pack --diag-url ./nohost:re:po
-ok 230 - fetch-pack --diag-url ./file:nohost/~re:po
-ok 231 - fetch-pack --diag-url ./nohost:12:re:po
-ok 232 - fetch-pack --diag-url ./file:nohost:12/~re:po
-ok 233 - fetch-pack --diag-url ./[::1]:re:po
-ok 234 - fetch-pack --diag-url ./file:[::1]/~re:po
-ok 235 - fetch-pack --diag-url ./[::1]:23:re:po
-ok 236 - fetch-pack --diag-url ./file:[::1]:23/~re:po
-ok 237 - fetch-pack --diag-url ./[:re:po
-ok 238 - fetch-pack --diag-url ./file:[/~re:po
-ok 239 - fetch-pack --diag-url ./[:aa:re:po
-ok 240 - fetch-pack --diag-url ./file:[:aa/~re:po
-ok 241 - fetch-pack --diag-url host:re:po
-ok 242 - fetch-pack --diag-url host:/~re:po
-ok 243 - fetch-pack --diag-url [::1]:re:po
-ok 244 - fetch-pack --diag-url [::1]:/~re:po
-ok 245 - fetch-pack --diag-url ssh+git://host/re/po
-ok 246 - fetch-pack --diag-url ssh+git://host/~re/po
-ok 247 - fetch-pack --diag-url ssh+git://host:/re/po
-ok 248 - fetch-pack --diag-url ssh+git://host:/~re/po
-ok 249 - fetch-pack --diag-url ssh+git://[email protected]/re/po
-ok 250 - fetch-pack --diag-url ssh+git://[email protected]/~re/po
-ok 251 - fetch-pack --diag-url ssh+git://[email protected]:/re/po
-ok 252 - fetch-pack --diag-url ssh+git://[email protected]:/~re/po
-ok 253 - fetch-pack --diag-url ssh+git://[email protected][::1]/re/po
-ok 254 - fetch-pack --diag-url ssh+git://[email protected][::1]/~re/po
-ok 255 - fetch-pack --diag-url ssh+git://[email protected][::1]:/re/po
-ok 256 - fetch-pack --diag-url ssh+git://[email protected][::1]:/~re/po
-ok 257 - fetch-pack --diag-url ssh+git://[email protected]::1/re/po
-ok 258 - fetch-pack --diag-url ssh+git://[email protected]::1/~re/po
-ok 259 - fetch-pack --diag-url ssh+git://[email protected]::1:/re/po
-ok 260 - fetch-pack --diag-url ssh+git://[email protected]::1:/~re/po
-ok 261 - fetch-pack --diag-url ssh+git://host:22/re/po
-ok 262 - fetch-pack --diag-url ssh+git://[email protected]:22/re/po
-ok 263 - fetch-pack --diag-url ssh+git://[email protected][::1]:22/re/po
-ok 264 - fetch-pack --diag-url git+ssh://host/re/po
-ok 265 - fetch-pack --diag-url git+ssh://host/~re/po
-ok 266 - fetch-pack --diag-url git+ssh://host:/re/po
-ok 267 - fetch-pack --diag-url git+ssh://host:/~re/po
-ok 268 - fetch-pack --diag-url git+ssh://[email protected]/re/po
-ok 269 - fetch-pack --diag-url git+ssh://[email protected]/~re/po
-ok 270 - fetch-pack --diag-url git+ssh://[email protected]:/re/po
-ok 271 - fetch-pack --diag-url git+ssh://[email protected]:/~re/po
-ok 272 - fetch-pack --diag-url git+ssh://[email protected][::1]/re/po
-ok 273 - fetch-pack --diag-url git+ssh://[email protected][::1]/~re/po
-ok 274 - fetch-pack --diag-url git+ssh://[email protected][::1]:/re/po
-ok 275 - fetch-pack --diag-url git+ssh://[email protected][::1]:/~re/po
-ok 276 - fetch-pack --diag-url git+ssh://[email protected]::1/re/po
-ok 277 - fetch-pack --diag-url git+ssh://[email protected]::1/~re/po
-ok 278 - fetch-pack --diag-url git+ssh://[email protected]::1:/re/po
-ok 279 - fetch-pack --diag-url git+ssh://[email protected]::1:/~re/po
-ok 280 - fetch-pack --diag-url git+ssh://host:22/re/po
-ok 281 - fetch-pack --diag-url git+ssh://[email protected]:22/re/po
-ok 282 - fetch-pack --diag-url git+ssh://[email protected][::1]:22/re/po
-ok 283 - fetch-pack --diag-url git://host/re/po
-ok 284 - fetch-pack --diag-url git://host/~re/po
-ok 285 - fetch-pack --diag-url git://host:/re/po
-ok 286 - fetch-pack --diag-url git://host:/~re/po
-ok 287 - fetch-pack --diag-url git://[email protected]/re/po
-ok 288 - fetch-pack --diag-url git://[email protected]/~re/po
-ok 289 - fetch-pack --diag-url git://[email protected]:/re/po
-ok 290 - fetch-pack --diag-url git://[email protected]:/~re/po
-ok 291 - fetch-pack --diag-url git://[email protected][::1]/re/po
-ok 292 - fetch-pack --diag-url git://[email protected][::1]/~re/po
-ok 293 - fetch-pack --diag-url git://[email protected][::1]:/re/po
-ok 294 - fetch-pack --diag-url git://[email protected][::1]:/~re/po
-ok 295 - fetch-pack --diag-url git://[email protected]::1/re/po
-ok 296 - fetch-pack --diag-url git://[email protected]::1/~re/po
-ok 297 - fetch-pack --diag-url git://[email protected]::1:/re/po
-ok 298 - fetch-pack --diag-url git://[email protected]::1:/~re/po
-ok 299 - fetch-pack --diag-url git://host:22/re/po
-ok 300 - fetch-pack --diag-url git://[email protected]:22/re/po
-ok 301 - fetch-pack --diag-url git://[email protected][::1]:22/re/po
-ok 302 - fetch-pack --diag-url ssh://host/re/po
-ok 303 - fetch-pack --diag-url ssh://host/~re/po
-ok 304 - fetch-pack --diag-url ssh://host:/re/po
-ok 305 - fetch-pack --diag-url ssh://host:/~re/po
-ok 306 - fetch-pack --diag-url ssh://[email protected]/re/po
-ok 307 - fetch-pack --diag-url ssh://[email protected]/~re/po
-ok 308 - fetch-pack --diag-url ssh://[email protected]:/re/po
-ok 309 - fetch-pack --diag-url ssh://[email protected]:/~re/po
-ok 310 - fetch-pack --diag-url ssh://[email protected][::1]/re/po
-ok 311 - fetch-pack --diag-url ssh://[email protected][::1]/~re/po
-ok 312 - fetch-pack --diag-url ssh://[email protected][::1]:/re/po
-ok 313 - fetch-pack --diag-url ssh://[email protected][::1]:/~re/po
-ok 314 - fetch-pack --diag-url ssh://[email protected]::1/re/po
-ok 315 - fetch-pack --diag-url ssh://[email protected]::1/~re/po
-ok 316 - fetch-pack --diag-url ssh://[email protected]::1:/re/po
-ok 317 - fetch-pack --diag-url ssh://[email protected]::1:/~re/po
-ok 318 - fetch-pack --diag-url ssh://host:22/re/po
-ok 319 - fetch-pack --diag-url ssh://[email protected]:22/re/po
-ok 320 - fetch-pack --diag-url ssh://[email protected][::1]:22/re/po
-ok 321 - fetch-pack --diag-url file://[email protected][::1]/re/po
-ok 322 - fetch-pack --diag-url file://[email protected][::1]/~re/po
-ok 323 - fetch-pack --diag-url ./nohost:re/po
-ok 324 - fetch-pack --diag-url ./file:nohost/~re/po
-ok 325 - fetch-pack --diag-url ./nohost:12:re/po
-ok 326 - fetch-pack --diag-url ./file:nohost:12/~re/po
-ok 327 - fetch-pack --diag-url ./[::1]:re/po
-ok 328 - fetch-pack --diag-url ./file:[::1]/~re/po
-ok 329 - fetch-pack --diag-url ./[::1]:23:re/po
-ok 330 - fetch-pack --diag-url ./file:[::1]:23/~re/po
-ok 331 - fetch-pack --diag-url ./[:re/po
-ok 332 - fetch-pack --diag-url ./file:[/~re/po
-ok 333 - fetch-pack --diag-url ./[:aa:re/po
-ok 334 - fetch-pack --diag-url ./file:[:aa/~re/po
-ok 335 - fetch-pack --diag-url host:re/po
-ok 336 - fetch-pack --diag-url host:/~re/po
-ok 337 - fetch-pack --diag-url [::1]:re/po
-ok 338 - fetch-pack --diag-url [::1]:/~re/po
-ok 339 # skip fetch-pack --diag-url file://c:/repo (missing MINGW)
-ok 340 # skip fetch-pack --diag-url c:repo (missing MINGW)
-# passed all 340 test(s)
-1..340
+ok 57 - fetch-pack can fetch a raw sha1
+ok 58 - fetch-pack --diag-url ssh+git://host/repo
+ok 59 - fetch-pack --diag-url ssh+git://host/~repo
+ok 60 - fetch-pack --diag-url ssh+git://host:/repo
+ok 61 - fetch-pack --diag-url ssh+git://host:/~repo
+ok 62 - fetch-pack --diag-url ssh+git://[email protected]/repo
+ok 63 - fetch-pack --diag-url ssh+git://[email protected]/~repo
+ok 64 - fetch-pack --diag-url ssh+git://[email protected]:/repo
+ok 65 - fetch-pack --diag-url ssh+git://[email protected]:/~repo
+ok 66 - fetch-pack --diag-url ssh+git://[email protected][::1]/repo
+ok 67 - fetch-pack --diag-url ssh+git://[email protected][::1]/~repo
+ok 68 - fetch-pack --diag-url ssh+git://[email protected][::1]:/repo
+ok 69 - fetch-pack --diag-url ssh+git://[email protected][::1]:/~repo
+ok 70 - fetch-pack --diag-url ssh+git://[email protected]::1/repo
+ok 71 - fetch-pack --diag-url ssh+git://[email protected]::1/~repo
+ok 72 - fetch-pack --diag-url ssh+git://[email protected]::1:/repo
+ok 73 - fetch-pack --diag-url ssh+git://[email protected]::1:/~repo
+ok 74 - fetch-pack --diag-url ssh+git://host:22/repo
+ok 75 - fetch-pack --diag-url ssh+git://[email protected]:22/repo
+ok 76 - fetch-pack --diag-url ssh+git://[email protected][::1]:22/repo
+ok 77 - fetch-pack --diag-url git+ssh://host/repo
+ok 78 - fetch-pack --diag-url git+ssh://host/~repo
+ok 79 - fetch-pack --diag-url git+ssh://host:/repo
+ok 80 - fetch-pack --diag-url git+ssh://host:/~repo
+ok 81 - fetch-pack --diag-url git+ssh://[email protected]/repo
+ok 82 - fetch-pack --diag-url git+ssh://[email protected]/~repo
+ok 83 - fetch-pack --diag-url git+ssh://[email protected]:/repo
+ok 84 - fetch-pack --diag-url git+ssh://[email protected]:/~repo
+ok 85 - fetch-pack --diag-url git+ssh://[email protected][::1]/repo
+ok 86 - fetch-pack --diag-url git+ssh://[email protected][::1]/~repo
+ok 87 - fetch-pack --diag-url git+ssh://[email protected][::1]:/repo
+ok 88 - fetch-pack --diag-url git+ssh://[email protected][::1]:/~repo
+ok 89 - fetch-pack --diag-url git+ssh://[email protected]::1/repo
+ok 90 - fetch-pack --diag-url git+ssh://[email protected]::1/~repo
+ok 91 - fetch-pack --diag-url git+ssh://[email protected]::1:/repo
+ok 92 - fetch-pack --diag-url git+ssh://[email protected]::1:/~repo
+ok 93 - fetch-pack --diag-url git+ssh://host:22/repo
+ok 94 - fetch-pack --diag-url git+ssh://[email protected]:22/repo
+ok 95 - fetch-pack --diag-url git+ssh://[email protected][::1]:22/repo
+ok 96 - fetch-pack --diag-url git://host/repo
+ok 97 - fetch-pack --diag-url git://host/~repo
+ok 98 - fetch-pack --diag-url git://host:/repo
+ok 99 - fetch-pack --diag-url git://host:/~repo
+ok 100 - fetch-pack --diag-url git://[email protected]/repo
+ok 101 - fetch-pack --diag-url git://[email protected]/~repo
+ok 102 - fetch-pack --diag-url git://[email protected]:/repo
+ok 103 - fetch-pack --diag-url git://[email protected]:/~repo
+ok 104 - fetch-pack --diag-url git://[email protected][::1]/repo
+ok 105 - fetch-pack --diag-url git://[email protected][::1]/~repo
+ok 106 - fetch-pack --diag-url git://[email protected][::1]:/repo
+ok 107 - fetch-pack --diag-url git://[email protected][::1]:/~repo
+ok 108 - fetch-pack --diag-url git://[email protected]::1/repo
+ok 109 - fetch-pack --diag-url git://[email protected]::1/~repo
+ok 110 - fetch-pack --diag-url git://[email protected]::1:/repo
+ok 111 - fetch-pack --diag-url git://[email protected]::1:/~repo
+ok 112 - fetch-pack --diag-url git://host:22/repo
+ok 113 - fetch-pack --diag-url git://[email protected]:22/repo
+ok 114 - fetch-pack --diag-url git://[email protected][::1]:22/repo
+ok 115 - fetch-pack --diag-url ssh://host/repo
+ok 116 - fetch-pack --diag-url ssh://host/~repo
+ok 117 - fetch-pack --diag-url ssh://host:/repo
+ok 118 - fetch-pack --diag-url ssh://host:/~repo
+ok 119 - fetch-pack --diag-url ssh://[email protected]/repo
+ok 120 - fetch-pack --diag-url ssh://[email protected]/~repo
+ok 121 - fetch-pack --diag-url ssh://[email protected]:/repo
+ok 122 - fetch-pack --diag-url ssh://[email protected]:/~repo
+ok 123 - fetch-pack --diag-url ssh://[email protected][::1]/repo
+ok 124 - fetch-pack --diag-url ssh://[email protected][::1]/~repo
+ok 125 - fetch-pack --diag-url ssh://[email protected][::1]:/repo
+ok 126 - fetch-pack --diag-url ssh://[email protected][::1]:/~repo
+ok 127 - fetch-pack --diag-url ssh://[email protected]::1/repo
+ok 128 - fetch-pack --diag-url ssh://[email protected]::1/~repo
+ok 129 - fetch-pack --diag-url ssh://[email protected]::1:/repo
+ok 130 - fetch-pack --diag-url ssh://[email protected]::1:/~repo
+ok 131 - fetch-pack --diag-url ssh://host:22/repo
+ok 132 - fetch-pack --diag-url ssh://[email protected]:22/repo
+ok 133 - fetch-pack --diag-url ssh://[email protected][::1]:22/repo
+ok 134 - fetch-pack --diag-url file://[email protected][::1]/repo
+ok 135 - fetch-pack --diag-url file://[email protected][::1]/~repo
+ok 136 - fetch-pack --diag-url ./nohost:repo
+ok 137 - fetch-pack --diag-url ./file:nohost/~repo
+ok 138 - fetch-pack --diag-url ./nohost:12:repo
+ok 139 - fetch-pack --diag-url ./file:nohost:12/~repo
+ok 140 - fetch-pack --diag-url ./[::1]:repo
+ok 141 - fetch-pack --diag-url ./file:[::1]/~repo
+ok 142 - fetch-pack --diag-url ./[::1]:23:repo
+ok 143 - fetch-pack --diag-url ./file:[::1]:23/~repo
+ok 144 - fetch-pack --diag-url ./[:repo
+ok 145 - fetch-pack --diag-url ./file:[/~repo
+ok 146 - fetch-pack --diag-url ./[:aa:repo
+ok 147 - fetch-pack --diag-url ./file:[:aa/~repo
+ok 148 - fetch-pack --diag-url host:repo
+ok 149 - fetch-pack --diag-url host:/~repo
+ok 150 - fetch-pack --diag-url [::1]:repo
+ok 151 - fetch-pack --diag-url [::1]:/~repo
+ok 152 - fetch-pack --diag-url ssh+git://host/re:po
+ok 153 - fetch-pack --diag-url ssh+git://host/~re:po
+ok 154 - fetch-pack --diag-url ssh+git://host:/re:po
+ok 155 - fetch-pack --diag-url ssh+git://host:/~re:po
+ok 156 - fetch-pack --diag-url ssh+git://[email protected]/re:po
+ok 157 - fetch-pack --diag-url ssh+git://[email protected]/~re:po
+ok 158 - fetch-pack --diag-url ssh+git://[email protected]:/re:po
+ok 159 - fetch-pack --diag-url ssh+git://[email protected]:/~re:po
+ok 160 - fetch-pack --diag-url ssh+git://[email protected][::1]/re:po
+ok 161 - fetch-pack --diag-url ssh+git://[email protected][::1]/~re:po
+ok 162 - fetch-pack --diag-url ssh+git://[email protected][::1]:/re:po
+ok 163 - fetch-pack --diag-url ssh+git://[email protected][::1]:/~re:po
+ok 164 - fetch-pack --diag-url ssh+git://[email protected]::1/re:po
+ok 165 - fetch-pack --diag-url ssh+git://[email protected]::1/~re:po
+ok 166 - fetch-pack --diag-url ssh+git://[email protected]::1:/re:po
+ok 167 - fetch-pack --diag-url ssh+git://[email protected]::1:/~re:po
+ok 168 - fetch-pack --diag-url ssh+git://host:22/re:po
+ok 169 - fetch-pack --diag-url ssh+git://[email protected]:22/re:po
+ok 170 - fetch-pack --diag-url ssh+git://[email protected][::1]:22/re:po
+ok 171 - fetch-pack --diag-url git+ssh://host/re:po
+ok 172 - fetch-pack --diag-url git+ssh://host/~re:po
+ok 173 - fetch-pack --diag-url git+ssh://host:/re:po
+ok 174 - fetch-pack --diag-url git+ssh://host:/~re:po
+ok 175 - fetch-pack --diag-url git+ssh://[email protected]/re:po
+ok 176 - fetch-pack --diag-url git+ssh://[email protected]/~re:po
+ok 177 - fetch-pack --diag-url git+ssh://[email protected]:/re:po
+ok 178 - fetch-pack --diag-url git+ssh://[email protected]:/~re:po
+ok 179 - fetch-pack --diag-url git+ssh://[email protected][::1]/re:po
+ok 180 - fetch-pack --diag-url git+ssh://[email protected][::1]/~re:po
+ok 181 - fetch-pack --diag-url git+ssh://[email protected][::1]:/re:po
+ok 182 - fetch-pack --diag-url git+ssh://[email protected][::1]:/~re:po
+ok 183 - fetch-pack --diag-url git+ssh://[email protected]::1/re:po
+ok 184 - fetch-pack --diag-url git+ssh://[email protected]::1/~re:po
+ok 185 - fetch-pack --diag-url git+ssh://[email protected]::1:/re:po
+ok 186 - fetch-pack --diag-url git+ssh://[email protected]::1:/~re:po
+ok 187 - fetch-pack --diag-url git+ssh://host:22/re:po
+ok 188 - fetch-pack --diag-url git+ssh://[email protected]:22/re:po
+ok 189 - fetch-pack --diag-url git+ssh://[email protected][::1]:22/re:po
+ok 190 - fetch-pack --diag-url git://host/re:po
+ok 191 - fetch-pack --diag-url git://host/~re:po
+ok 192 - fetch-pack --diag-url git://host:/re:po
+ok 193 - fetch-pack --diag-url git://host:/~re:po
+ok 194 - fetch-pack --diag-url git://[email protected]/re:po
+ok 195 - fetch-pack --diag-url git://[email protected]/~re:po
+ok 196 - fetch-pack --diag-url git://[email protected]:/re:po
+ok 197 - fetch-pack --diag-url git://[email protected]:/~re:po
+ok 198 - fetch-pack --diag-url git://[email protected][::1]/re:po
+ok 199 - fetch-pack --diag-url git://[email protected][::1]/~re:po
+ok 200 - fetch-pack --diag-url git://[email protected][::1]:/re:po
+ok 201 - fetch-pack --diag-url git://[email protected][::1]:/~re:po
+ok 202 - fetch-pack --diag-url git://[email protected]::1/re:po
+ok 203 - fetch-pack --diag-url git://[email protected]::1/~re:po
+ok 204 - fetch-pack --diag-url git://[email protected]::1:/re:po
+ok 205 - fetch-pack --diag-url git://[email protected]::1:/~re:po
+ok 206 - fetch-pack --diag-url git://host:22/re:po
+ok 207 - fetch-pack --diag-url git://[email protected]:22/re:po
+ok 208 - fetch-pack --diag-url git://[email protected][::1]:22/re:po
+ok 209 - fetch-pack --diag-url ssh://host/re:po
+ok 210 - fetch-pack --diag-url ssh://host/~re:po
+ok 211 - fetch-pack --diag-url ssh://host:/re:po
+ok 212 - fetch-pack --diag-url ssh://host:/~re:po
+ok 213 - fetch-pack --diag-url ssh://[email protected]/re:po
+ok 214 - fetch-pack --diag-url ssh://[email protected]/~re:po
+ok 215 - fetch-pack --diag-url ssh://[email protected]:/re:po
+ok 216 - fetch-pack --diag-url ssh://[email protected]:/~re:po
+ok 217 - fetch-pack --diag-url ssh://[email protected][::1]/re:po
+ok 218 - fetch-pack --diag-url ssh://[email protected][::1]/~re:po
+ok 219 - fetch-pack --diag-url ssh://[email protected][::1]:/re:po
+ok 220 - fetch-pack --diag-url ssh://[email protected][::1]:/~re:po
+ok 221 - fetch-pack --diag-url ssh://[email protected]::1/re:po
+ok 222 - fetch-pack --diag-url ssh://[email protected]::1/~re:po
+ok 223 - fetch-pack --diag-url ssh://[email protected]::1:/re:po
+ok 224 - fetch-pack --diag-url ssh://[email protected]::1:/~re:po
+ok 225 - fetch-pack --diag-url ssh://host:22/re:po
+ok 226 - fetch-pack --diag-url ssh://[email protected]:22/re:po
+ok 227 - fetch-pack --diag-url ssh://[email protected][::1]:22/re:po
+ok 228 - fetch-pack --diag-url file://[email protected][::1]/re:po
+ok 229 - fetch-pack --diag-url file://[email protected][::1]/~re:po
+ok 230 - fetch-pack --diag-url ./nohost:re:po
+ok 231 - fetch-pack --diag-url ./file:nohost/~re:po
+ok 232 - fetch-pack --diag-url ./nohost:12:re:po
+ok 233 - fetch-pack --diag-url ./file:nohost:12/~re:po
+ok 234 - fetch-pack --diag-url ./[::1]:re:po
+ok 235 - fetch-pack --diag-url ./file:[::1]/~re:po
+ok 236 - fetch-pack --diag-url ./[::1]:23:re:po
+ok 237 - fetch-pack --diag-url ./file:[::1]:23/~re:po
+ok 238 - fetch-pack --diag-url ./[:re:po
+ok 239 - fetch-pack --diag-url ./file:[/~re:po
+ok 240 - fetch-pack --diag-url ./[:aa:re:po
+ok 241 - fetch-pack --diag-url ./file:[:aa/~re:po
+ok 242 - fetch-pack --diag-url host:re:po
+ok 243 - fetch-pack --diag-url host:/~re:po
+ok 244 - fetch-pack --diag-url [::1]:re:po
+ok 245 - fetch-pack --diag-url [::1]:/~re:po
+ok 246 - fetch-pack --diag-url ssh+git://host/re/po
+ok 247 - fetch-pack --diag-url ssh+git://host/~re/po
+ok 248 - fetch-pack --diag-url ssh+git://host:/re/po
+ok 249 - fetch-pack --diag-url ssh+git://host:/~re/po
+ok 250 - fetch-pack --diag-url ssh+git://[email protected]/re/po
+ok 251 - fetch-pack --diag-url ssh+git://[email protected]/~re/po
+ok 252 - fetch-pack --diag-url ssh+git://[email protected]:/re/po
+ok 253 - fetch-pack --diag-url ssh+git://[email protected]:/~re/po
+ok 254 - fetch-pack --diag-url ssh+git://[email protected][::1]/re/po
+ok 255 - fetch-pack --diag-url ssh+git://[email protected][::1]/~re/po
+ok 256 - fetch-pack --diag-url ssh+git://[email protected][::1]:/re/po
+ok 257 - fetch-pack --diag-url ssh+git://[email protected][::1]:/~re/po
+ok 258 - fetch-pack --diag-url ssh+git://[email protected]::1/re/po
+ok 259 - fetch-pack --diag-url ssh+git://[email protected]::1/~re/po
+ok 260 - fetch-pack --diag-url ssh+git://[email protected]::1:/re/po
+ok 261 - fetch-pack --diag-url ssh+git://[email protected]::1:/~re/po
+ok 262 - fetch-pack --diag-url ssh+git://host:22/re/po
+ok 263 - fetch-pack --diag-url ssh+git://[email protected]:22/re/po
+ok 264 - fetch-pack --diag-url ssh+git://[email protected][::1]:22/re/po
+ok 265 - fetch-pack --diag-url git+ssh://host/re/po
+ok 266 - fetch-pack --diag-url git+ssh://host/~re/po
+ok 267 - fetch-pack --diag-url git+ssh://host:/re/po
+ok 268 - fetch-pack --diag-url git+ssh://host:/~re/po
+ok 269 - fetch-pack --diag-url git+ssh://[email protected]/re/po
+ok 270 - fetch-pack --diag-url git+ssh://[email protected]/~re/po
+ok 271 - fetch-pack --diag-url git+ssh://[email protected]:/re/po
+ok 272 - fetch-pack --diag-url git+ssh://[email protected]:/~re/po
+ok 273 - fetch-pack --diag-url git+ssh://[email protected][::1]/re/po
+ok 274 - fetch-pack --diag-url git+ssh://[email protected][::1]/~re/po
+ok 275 - fetch-pack --diag-url git+ssh://[email protected][::1]:/re/po
+ok 276 - fetch-pack --diag-url git+ssh://[email protected][::1]:/~re/po
+ok 277 - fetch-pack --diag-url git+ssh://[email protected]::1/re/po
+ok 278 - fetch-pack --diag-url git+ssh://[email protected]::1/~re/po
+ok 279 - fetch-pack --diag-url git+ssh://[email protected]::1:/re/po
+ok 280 - fetch-pack --diag-url git+ssh://[email protected]::1:/~re/po
+ok 281 - fetch-pack --diag-url git+ssh://host:22/re/po
+ok 282 - fetch-pack --diag-url git+ssh://[email protected]:22/re/po
+ok 283 - fetch-pack --diag-url git+ssh://[email protected][::1]:22/re/po
+ok 284 - fetch-pack --diag-url git://host/re/po
+ok 285 - fetch-pack --diag-url git://host/~re/po
+ok 286 - fetch-pack --diag-url git://host:/re/po
+ok 287 - fetch-pack --diag-url git://host:/~re/po
+ok 288 - fetch-pack --diag-url git://[email protected]/re/po
+ok 289 - fetch-pack --diag-url git://[email protected]/~re/po
+ok 290 - fetch-pack --diag-url git://[email protected]:/re/po
+ok 291 - fetch-pack --diag-url git://[email protected]:/~re/po
+ok 292 - fetch-pack --diag-url git://[email protected][::1]/re/po
+ok 293 - fetch-pack --diag-url git://[email protected][::1]/~re/po
+ok 294 - fetch-pack --diag-url git://[email protected][::1]:/re/po
+ok 295 - fetch-pack --diag-url git://[email protected][::1]:/~re/po
+ok 296 - fetch-pack --diag-url git://[email protected]::1/re/po
+ok 297 - fetch-pack --diag-url git://[email protected]::1/~re/po
+ok 298 - fetch-pack --diag-url git://[email protected]::1:/re/po
+ok 299 - fetch-pack --diag-url git://[email protected]::1:/~re/po
+ok 300 - fetch-pack --diag-url git://host:22/re/po
+ok 301 - fetch-pack --diag-url git://[email protected]:22/re/po
+ok 302 - fetch-pack --diag-url git://[email protected][::1]:22/re/po
+ok 303 - fetch-pack --diag-url ssh://host/re/po
+ok 304 - fetch-pack --diag-url ssh://host/~re/po
+ok 305 - fetch-pack --diag-url ssh://host:/re/po
+ok 306 - fetch-pack --diag-url ssh://host:/~re/po
+ok 307 - fetch-pack --diag-url ssh://[email protected]/re/po
+ok 308 - fetch-pack --diag-url ssh://[email protected]/~re/po
+ok 309 - fetch-pack --diag-url ssh://[email protected]:/re/po
+ok 310 - fetch-pack --diag-url ssh://[email protected]:/~re/po
+ok 311 - fetch-pack --diag-url ssh://[email protected][::1]/re/po
+ok 312 - fetch-pack --diag-url ssh://[email protected][::1]/~re/po
+ok 313 - fetch-pack --diag-url ssh://[email protected][::1]:/re/po
+ok 314 - fetch-pack --diag-url ssh://[email protected][::1]:/~re/po
+ok 315 - fetch-pack --diag-url ssh://[email protected]::1/re/po
+ok 316 - fetch-pack --diag-url ssh://[email protected]::1/~re/po
+ok 317 - fetch-pack --diag-url ssh://[email protected]::1:/re/po
+ok 318 - fetch-pack --diag-url ssh://[email protected]::1:/~re/po
+ok 319 - fetch-pack --diag-url ssh://host:22/re/po
+ok 320 - fetch-pack --diag-url ssh://[email protected]:22/re/po
+ok 321 - fetch-pack --diag-url ssh://[email protected][::1]:22/re/po
+ok 322 - fetch-pack --diag-url file://[email protected][::1]/re/po
+ok 323 - fetch-pack --diag-url file://[email protected][::1]/~re/po
+ok 324 - fetch-pack --diag-url ./nohost:re/po
+ok 325 - fetch-pack --diag-url ./file:nohost/~re/po
+ok 326 - fetch-pack --diag-url ./nohost:12:re/po
+ok 327 - fetch-pack --diag-url ./file:nohost:12/~re/po
+ok 328 - fetch-pack --diag-url ./[::1]:re/po
+ok 329 - fetch-pack --diag-url ./file:[::1]/~re/po
+ok 330 - fetch-pack --diag-url ./[::1]:23:re/po
+ok 331 - fetch-pack --diag-url ./file:[::1]:23/~re/po
+ok 332 - fetch-pack --diag-url ./[:re/po
+ok 333 - fetch-pack --diag-url ./file:[/~re/po
+ok 334 - fetch-pack --diag-url ./[:aa:re/po
+ok 335 - fetch-pack --diag-url ./file:[:aa/~re/po
+ok 336 - fetch-pack --diag-url host:re/po
+ok 337 - fetch-pack --diag-url host:/~re/po
+ok 338 - fetch-pack --diag-url [::1]:re/po
+ok 339 - fetch-pack --diag-url [::1]:/~re/po
+ok 340 # skip fetch-pack --diag-url file://c:/repo (missing MINGW)
+ok 341 # skip fetch-pack --diag-url c:repo (missing MINGW)
+ok 342 - clone shallow since ...
+ok 343 - fetch shallow since ...
+ok 344 - shallow clone exclude tag two
+ok 345 - fetch exclude tag one
+ok 346 - fetching deepen
+# passed all 346 test(s)
+1..346
 *** t5501-fetch-push-alternates.sh ***
 ok 1 - setup
 ok 2 - pushing into a repository with the same alternate
@@ -9082,90 +9747,96 @@
 1..12
 *** t5505-remote.sh ***
 ok 1 - setup
-ok 2 - remote information for the origin
-ok 3 - add another remote
-ok 4 - check remote-tracking
-ok 5 - remote forces tracking branches
-ok 6 - remove remote
+ok 2 - add remote whose URL agrees with url.<...>.insteadOf
+ok 3 - remote information for the origin
+ok 4 - add another remote
+ok 5 - check remote-tracking
+ok 6 - remote forces tracking branches
 ok 7 - remove remote
-ok 8 - remove remote protects local branches
-ok 9 - show
-ok 10 - show -n
-ok 11 - prune
-ok 12 - set-head --delete
-ok 13 - set-head --auto
-ok 14 - set-head --auto has no problem w/multiple HEADs
-ok 15 - set-head explicit
-ok 16 - prune --dry-run
-ok 17 - add --mirror && prune
-ok 18 - add --mirror=fetch
-ok 19 - fetch mirrors act as mirrors during fetch
-ok 20 - fetch mirrors can prune
-ok 21 - fetch mirrors do not act as mirrors during push
-ok 22 - add fetch mirror with specific branches
-ok 23 - fetch mirror respects specific branches
-ok 24 - add --mirror=push
-ok 25 - push mirrors act as mirrors during push
-ok 26 - push mirrors do not act as mirrors during fetch
-ok 27 - push mirrors do not allow you to specify refs
-ok 28 - add alt && prune
-ok 29 - add with reachable tags (default)
-ok 30 - add --tags
-ok 31 - add --no-tags
-ok 32 - reject --no-no-tags
-ok 33 - update
-ok 34 - update with arguments
-ok 35 - update --prune
-ok 36 - update default
-ok 37 - update default (overridden, with funny whitespace)
-ok 38 - update (with remotes.default defined)
-ok 39 - "remote show" does not show symbolic refs
-ok 40 - reject adding remote with an invalid name
-ok 41 - rename a remote
-ok 42 - rename does not update a non-default fetch refspec
-ok 43 - rename a remote with name part of fetch spec
-ok 44 - rename a remote with name prefix of other remote
-ok 45 - migrate a remote from named file in $GIT_DIR/remotes
-ok 46 - migrate a remote from named file in $GIT_DIR/branches
-ok 47 - migrate a remote from named file in $GIT_DIR/branches (2)
-ok 48 - remote prune to cause a dangling symref
-ok 49 - show empty remote
-ok 50 - remote set-branches requires a remote
-ok 51 - remote set-branches
-ok 52 - remote set-branches with --mirror
-ok 53 - new remote
-ok 54 - get-url on new remote
-ok 55 - remote set-url with locked config
-ok 56 - remote set-url bar
-ok 57 - remote set-url baz bar
-ok 58 - remote set-url zot bar
-ok 59 - remote set-url --push zot baz
-ok 60 - remote set-url --push zot
-ok 61 - get-url with different urls
-ok 62 - remote set-url --push qux zot
-ok 63 - remote set-url --push foo qu+x
-ok 64 - remote set-url --push --add aaa
-ok 65 - get-url on multi push remote
-ok 66 - remote set-url --push bar aaa
-ok 67 - remote set-url --push --delete bar
-ok 68 - remote set-url --push --delete foo
-ok 69 - remote set-url --add bbb
-ok 70 - get-url on multi fetch remote
-ok 71 - remote set-url --delete .*
-ok 72 - remote set-url --delete bbb
-ok 73 - remote set-url --delete baz
-ok 74 - remote set-url --add ccc
-ok 75 - remote set-url --delete baz
-ok 76 - extra args: setup
-ok 77 - extra args: add nick url
-ok 78 - extra args: rename origin newname
-ok 79 - extra args: remove origin
-ok 80 - extra args: set-head origin master
-ok 81 - extra args: get-url origin newurl
-ok 82 - extra args: set-url origin newurl oldurl
-ok 83 - add remote matching the "insteadOf" URL
-# passed all 83 test(s)
-1..83
+ok 8 - remove remote
+ok 9 - remove remote protects local branches
+ok 10 - remove errors out early when deleting non-existent branch
+ok 11 - rename errors out early when deleting non-existent branch
+ok 12 - add existing foreign_vcs remote
+ok 13 - add existing foreign_vcs remote
+ok 14 - show
+ok 15 - show -n
+ok 16 - prune
+ok 17 - set-head --delete
+ok 18 - set-head --auto
+ok 19 - set-head --auto has no problem w/multiple HEADs
+ok 20 - set-head explicit
+ok 21 - prune --dry-run
+ok 22 - add --mirror && prune
+ok 23 - add --mirror=fetch
+ok 24 - fetch mirrors act as mirrors during fetch
+ok 25 - fetch mirrors can prune
+ok 26 - fetch mirrors do not act as mirrors during push
+ok 27 - add fetch mirror with specific branches
+ok 28 - fetch mirror respects specific branches
+ok 29 - add --mirror=push
+ok 30 - push mirrors act as mirrors during push
+ok 31 - push mirrors do not act as mirrors during fetch
+ok 32 - push mirrors do not allow you to specify refs
+ok 33 - add alt && prune
+ok 34 - add with reachable tags (default)
+ok 35 - add --tags
+ok 36 - add --no-tags
+ok 37 - reject --no-no-tags
+ok 38 - update
+ok 39 - update with arguments
+ok 40 - update --prune
+ok 41 - update default
+ok 42 - update default (overridden, with funny whitespace)
+ok 43 - update (with remotes.default defined)
+ok 44 - "remote show" does not show symbolic refs
+ok 45 - reject adding remote with an invalid name
+ok 46 - rename a remote
+ok 47 - rename does not update a non-default fetch refspec
+ok 48 - rename a remote with name part of fetch spec
+ok 49 - rename a remote with name prefix of other remote
+ok 50 - rename succeeds with existing remote.<target>.prune
+ok 51 - migrate a remote from named file in $GIT_DIR/remotes
+ok 52 - migrate a remote from named file in $GIT_DIR/branches
+ok 53 - migrate a remote from named file in $GIT_DIR/branches (2)
+ok 54 - remote prune to cause a dangling symref
+ok 55 - show empty remote
+ok 56 - remote set-branches requires a remote
+ok 57 - remote set-branches
+ok 58 - remote set-branches with --mirror
+ok 59 - new remote
+ok 60 - get-url on new remote
+ok 61 - remote set-url with locked config
+ok 62 - remote set-url bar
+ok 63 - remote set-url baz bar
+ok 64 - remote set-url zot bar
+ok 65 - remote set-url --push zot baz
+ok 66 - remote set-url --push zot
+ok 67 - get-url with different urls
+ok 68 - remote set-url --push qux zot
+ok 69 - remote set-url --push foo qu+x
+ok 70 - remote set-url --push --add aaa
+ok 71 - get-url on multi push remote
+ok 72 - remote set-url --push bar aaa
+ok 73 - remote set-url --push --delete bar
+ok 74 - remote set-url --push --delete foo
+ok 75 - remote set-url --add bbb
+ok 76 - get-url on multi fetch remote
+ok 77 - remote set-url --delete .*
+ok 78 - remote set-url --delete bbb
+ok 79 - remote set-url --delete baz
+ok 80 - remote set-url --add ccc
+ok 81 - remote set-url --delete baz
+ok 82 - extra args: setup
+ok 83 - extra args: add nick url
+ok 84 - extra args: rename origin newname
+ok 85 - extra args: remove origin
+ok 86 - extra args: set-head origin master
+ok 87 - extra args: get-url origin newurl
+ok 88 - extra args: set-url origin newurl oldurl
+ok 89 - add remote matching the "insteadOf" URL
+# passed all 89 test(s)
+1..89
 *** t5506-remote-groups.sh ***
 ok 1 - setup
 ok 2 - no group updates all
@@ -9223,63 +9894,62 @@
 ok 22 - unbundle 2
 ok 23 - bundle does not prerequisite objects
 ok 24 - bundle should be able to create a full history
-ok 25 - fetch via rsync
-ok 26 - push via rsync
-ok 27 - push via rsync
-ok 28 - fetch with a non-applying branch.<name>.merge
-ok 29 - fetch from GIT URL with a non-applying branch.<name>.merge [1]
-ok 30 - fetch from GIT URL with a non-applying branch.<name>.merge [2]
-ok 31 - fetch from GIT URL with a non-applying branch.<name>.merge [3]
-ok 32 - quoting of a strangely named repo
-ok 33 - bundle should record HEAD correctly
-ok 34 - mark initial state of origin/master
-ok 35 - explicit fetch should update tracking
-ok 36 - explicit pull should update tracking
-ok 37 - explicit --refmap is allowed only with command-line refspec
-ok 38 - explicit --refmap option overrides remote.*.fetch
-ok 39 - explicitly empty --refmap option disables remote.*.fetch
-ok 40 - configured fetch updates tracking
-ok 41 - non-matching refspecs do not confuse tracking update
-ok 42 - pushing nonexistent branch by mistake should not segv
-ok 43 - auto tag following fetches minimum
-ok 44 - refuse to fetch into the current branch
-ok 45 - fetch into the current branch with --update-head-ok
-ok 46 - fetch --dry-run
-ok 47 - should be able to fetch with duplicate refspecs
-ok 48 - prune fetch.prune=unset remote.origin.prune=unset; kept
-ok 49 - prune fetch.prune=unset remote.origin.prune=unset --no-prune; kept
-ok 50 - prune fetch.prune=unset remote.origin.prune=unset --prune; pruned
-ok 51 - prune fetch.prune=false remote.origin.prune=unset; kept
-ok 52 - prune fetch.prune=false remote.origin.prune=unset --no-prune; kept
-ok 53 - prune fetch.prune=false remote.origin.prune=unset --prune; pruned
-ok 54 - prune fetch.prune=true remote.origin.prune=unset; pruned
-ok 55 - prune fetch.prune=true remote.origin.prune=unset --prune; pruned
-ok 56 - prune fetch.prune=true remote.origin.prune=unset --no-prune; kept
-ok 57 - prune fetch.prune=unset remote.origin.prune=false; kept
-ok 58 - prune fetch.prune=unset remote.origin.prune=false --no-prune; kept
-ok 59 - prune fetch.prune=unset remote.origin.prune=false --prune; pruned
-ok 60 - prune fetch.prune=false remote.origin.prune=false; kept
-ok 61 - prune fetch.prune=false remote.origin.prune=false --no-prune; kept
-ok 62 - prune fetch.prune=false remote.origin.prune=false --prune; pruned
-ok 63 - prune fetch.prune=true remote.origin.prune=false; kept
-ok 64 - prune fetch.prune=true remote.origin.prune=false --prune; pruned
-ok 65 - prune fetch.prune=true remote.origin.prune=false --no-prune; kept
-ok 66 - prune fetch.prune=unset remote.origin.prune=true; pruned
-ok 67 - prune fetch.prune=unset remote.origin.prune=true --no-prune; kept
-ok 68 - prune fetch.prune=unset remote.origin.prune=true --prune; pruned
-ok 69 - prune fetch.prune=false remote.origin.prune=true; pruned
-ok 70 - prune fetch.prune=false remote.origin.prune=true --no-prune; kept
-ok 71 - prune fetch.prune=false remote.origin.prune=true --prune; pruned
-ok 72 - prune fetch.prune=true remote.origin.prune=true; pruned
-ok 73 - prune fetch.prune=true remote.origin.prune=true --prune; pruned
-ok 74 - prune fetch.prune=true remote.origin.prune=true --no-prune; kept
-ok 75 - all boundary commits are excluded
-ok 76 - fetch --prune prints the remotes url
-ok 77 - branchname D/F conflict resolved by --prune
-ok 78 - fetching a one-level ref works
-ok 79 - fetching with auto-gc does not lock up
-# passed all 79 test(s)
-1..79
+ok 25 - fetch with a non-applying branch.<name>.merge
+ok 26 - fetch from GIT URL with a non-applying branch.<name>.merge [1]
+ok 27 - fetch from GIT URL with a non-applying branch.<name>.merge [2]
+ok 28 - fetch from GIT URL with a non-applying branch.<name>.merge [3]
+ok 29 - quoting of a strangely named repo
+ok 30 - bundle should record HEAD correctly
+ok 31 - mark initial state of origin/master
+ok 32 - explicit fetch should update tracking
+ok 33 - explicit pull should update tracking
+ok 34 - explicit --refmap is allowed only with command-line refspec
+ok 35 - explicit --refmap option overrides remote.*.fetch
+ok 36 - explicitly empty --refmap option disables remote.*.fetch
+ok 37 - configured fetch updates tracking
+ok 38 - non-matching refspecs do not confuse tracking update
+ok 39 - pushing nonexistent branch by mistake should not segv
+ok 40 - auto tag following fetches minimum
+ok 41 - refuse to fetch into the current branch
+ok 42 - fetch into the current branch with --update-head-ok
+ok 43 - fetch --dry-run
+ok 44 - should be able to fetch with duplicate refspecs
+ok 45 - prune fetch.prune=unset remote.origin.prune=unset; kept
+ok 46 - prune fetch.prune=unset remote.origin.prune=unset --no-prune; kept
+ok 47 - prune fetch.prune=unset remote.origin.prune=unset --prune; pruned
+ok 48 - prune fetch.prune=false remote.origin.prune=unset; kept
+ok 49 - prune fetch.prune=false remote.origin.prune=unset --no-prune; kept
+ok 50 - prune fetch.prune=false remote.origin.prune=unset --prune; pruned
+ok 51 - prune fetch.prune=true remote.origin.prune=unset; pruned
+ok 52 - prune fetch.prune=true remote.origin.prune=unset --prune; pruned
+ok 53 - prune fetch.prune=true remote.origin.prune=unset --no-prune; kept
+ok 54 - prune fetch.prune=unset remote.origin.prune=false; kept
+ok 55 - prune fetch.prune=unset remote.origin.prune=false --no-prune; kept
+ok 56 - prune fetch.prune=unset remote.origin.prune=false --prune; pruned
+ok 57 - prune fetch.prune=false remote.origin.prune=false; kept
+ok 58 - prune fetch.prune=false remote.origin.prune=false --no-prune; kept
+ok 59 - prune fetch.prune=false remote.origin.prune=false --prune; pruned
+ok 60 - prune fetch.prune=true remote.origin.prune=false; kept
+ok 61 - prune fetch.prune=true remote.origin.prune=false --prune; pruned
+ok 62 - prune fetch.prune=true remote.origin.prune=false --no-prune; kept
+ok 63 - prune fetch.prune=unset remote.origin.prune=true; pruned
+ok 64 - prune fetch.prune=unset remote.origin.prune=true --no-prune; kept
+ok 65 - prune fetch.prune=unset remote.origin.prune=true --prune; pruned
+ok 66 - prune fetch.prune=false remote.origin.prune=true; pruned
+ok 67 - prune fetch.prune=false remote.origin.prune=true --no-prune; kept
+ok 68 - prune fetch.prune=false remote.origin.prune=true --prune; pruned
+ok 69 - prune fetch.prune=true remote.origin.prune=true; pruned
+ok 70 - prune fetch.prune=true remote.origin.prune=true --prune; pruned
+ok 71 - prune fetch.prune=true remote.origin.prune=true --no-prune; kept
+ok 72 - all boundary commits are excluded
+ok 73 - fetch --prune prints the remotes url
+ok 74 - branchname D/F conflict resolved by --prune
+ok 75 - fetching a one-level ref works
+ok 76 - fetching with auto-gc does not lock up
+ok 77 - fetch aligned output
+ok 78 - fetch compact output
+# passed all 78 test(s)
+1..78
 *** t5511-refspec.sh ***
 ok 1 - push  (invalid)
 ok 2 - push :
@@ -9349,8 +10019,14 @@
 ok 18 - Hide some refs with uploadpack.hiderefs
 ok 19 - Override hiding of uploadpack.hiderefs
 ok 20 - overrides work between mixed transfer/upload-pack hideRefs
-# passed all 20 test(s)
-1..20
+ok 21 - ls-remote --symref
+ok 22 - ls-remote with filtered symref (refname)
+not ok 23 - ls-remote with filtered symref (--heads) # TODO known breakage
+ok 24 - ls-remote --symref omits filtered-out matches
+ok 25 # skip indicate no refs in standards-compliant empty remote (missing JGIT of PIPE,JGIT,GIT_DAEMON)
+# still have 1 known breakage(s)
+# passed all remaining 24 test(s)
+1..25
 *** t5513-fetch-track.sh ***
 ok 1 - setup
 ok 2 - fetch
@@ -9582,36 +10258,52 @@
 ok 17 - fast-forwards working tree if branch head is updated
 ok 18 - fast-forward fails with conflicting work tree
 ok 19 - --rebase
-ok 20 - --rebase fails with multiple branches
-ok 21 - pull --rebase succeeds with dirty working directory and rebase.autostash set
-ok 22 - pull.rebase
-ok 23 - branch.to-rebase.rebase
-ok 24 - branch.to-rebase.rebase should override pull.rebase
-ok 25 - preserve merge setup
-ok 26 - pull.rebase=false create a new merge commit
-ok 27 - pull.rebase=true flattens keep-merge
-ok 28 - pull.rebase=1 is treated as true and flattens keep-merge
-ok 29 - pull.rebase=preserve rebases and merges keep-merge
-ok 30 - pull.rebase=invalid fails
-ok 31 - --rebase=false create a new merge commit
-ok 32 - --rebase=true rebases and flattens keep-merge
-ok 33 - --rebase=preserve rebases and merges keep-merge
-ok 34 - --rebase=invalid fails
-ok 35 - --rebase overrides pull.rebase=preserve and flattens keep-merge
-ok 36 - --rebase with rebased upstream
-ok 37 - --rebase -f with rebased upstream
-ok 38 - --rebase with rebased default upstream
-ok 39 - rebased upstream + fetch + pull --rebase
-ok 40 - pull --rebase dies early with dirty working directory
-ok 41 - pull --rebase works on branch yet to be born
-ok 42 - pull --rebase fails on unborn branch with staged changes
-ok 43 - setup for detecting upstreamed changes
-ok 44 - git pull --rebase detects upstreamed changes
-ok 45 - setup for avoiding reapplying old patches
-ok 46 - git pull --rebase does not reapply old patches
-ok 47 - git pull --rebase against local branch
-# passed all 47 test(s)
-1..47
+ok 20 - --rebase fast forward
+ok 21 - --rebase with conflicts shows advice
+ok 22 - failed --rebase shows advice
+ok 23 - --rebase fails with multiple branches
+ok 24 - pull --rebase succeeds with dirty working directory and rebase.autostash set
+ok 25 - pull --rebase --autostash & rebase.autostash=true
+ok 26 - pull --rebase --autostash & rebase.autostash=false
+ok 27 - pull --rebase --autostash & rebase.autostash unset
+ok 28 - pull --rebase --no-autostash & rebase.autostash=true
+ok 29 - pull --rebase --no-autostash & rebase.autostash=false
+ok 30 - pull --rebase --no-autostash & rebase.autostash unset
+ok 31 - pull --autostash (without --rebase) is illegal
+ok 32 - pull --no-autostash (without --rebase) is illegal
+ok 33 - pull.rebase
+ok 34 - pull --autostash & pull.rebase=true
+ok 35 - pull --no-autostash & pull.rebase=true
+ok 36 - branch.to-rebase.rebase
+ok 37 - branch.to-rebase.rebase should override pull.rebase
+ok 38 - pull --rebase warns on --verify-signatures
+ok 39 - pull --rebase does not warn on --no-verify-signatures
+ok 40 - preserve merge setup
+ok 41 - pull.rebase=false create a new merge commit
+ok 42 - pull.rebase=true flattens keep-merge
+ok 43 - pull.rebase=1 is treated as true and flattens keep-merge
+ok 44 - pull.rebase=preserve rebases and merges keep-merge
+ok 45 - pull.rebase=interactive
+ok 46 - pull.rebase=invalid fails
+ok 47 - --rebase=false create a new merge commit
+ok 48 - --rebase=true rebases and flattens keep-merge
+ok 49 - --rebase=preserve rebases and merges keep-merge
+ok 50 - --rebase=invalid fails
+ok 51 - --rebase overrides pull.rebase=preserve and flattens keep-merge
+ok 52 - --rebase with rebased upstream
+ok 53 - --rebase -f with rebased upstream
+ok 54 - --rebase with rebased default upstream
+ok 55 - rebased upstream + fetch + pull --rebase
+ok 56 - pull --rebase dies early with dirty working directory
+ok 57 - pull --rebase works on branch yet to be born
+ok 58 - pull --rebase fails on unborn branch with staged changes
+ok 59 - setup for detecting upstreamed changes
+ok 60 - git pull --rebase detects upstreamed changes
+ok 61 - setup for avoiding reapplying old patches
+ok 62 - git pull --rebase does not reapply old patches
+ok 63 - git pull --rebase against local branch
+# passed all 63 test(s)
+1..63
 *** t5521-pull-options.sh ***
 ok 1 - setup
 ok 2 - git pull -q
@@ -9626,8 +10318,9 @@
 ok 11 - git pull --all
 ok 12 - git pull --dry-run
 ok 13 - git pull --all --dry-run
-# passed all 13 test(s)
-1..13
+ok 14 - git pull --allow-unrelated-histories
+# passed all 14 test(s)
+1..14
 *** t5522-pull-symlink.sh ***
 ok 1 - setup
 ok 2 - pulling from real subdir
@@ -9671,31 +10364,35 @@
 *** t5526-fetch-submodules.sh ***
 ok 1 - setup
 ok 2 - fetch --recurse-submodules recurses into submodules
-ok 3 - fetch alone only fetches superproject
-ok 4 - fetch --no-recurse-submodules only fetches superproject
-ok 5 - using fetchRecurseSubmodules=true in .gitmodules recurses into submodules
-ok 6 - --no-recurse-submodules overrides .gitmodules config
-ok 7 - using fetchRecurseSubmodules=false in .git/config overrides setting in .gitmodules
-ok 8 - --recurse-submodules overrides fetchRecurseSubmodules setting from .git/config
-ok 9 - --quiet propagates to submodules
-ok 10 - --dry-run propagates to submodules
-ok 11 - Without --dry-run propagates to submodules
-ok 12 - recurseSubmodules=true propagates into submodules
-ok 13 - --recurse-submodules overrides config in submodule
-ok 14 - --no-recurse-submodules overrides config setting
-ok 15 - Recursion doesn't happen when no new commits are fetched in the superproject
-ok 16 - Recursion stops when no new submodule commits are fetched
-ok 17 - Recursion doesn't happen when new superproject commits don't change any submodules
-ok 18 - Recursion picks up config in submodule
-ok 19 - Recursion picks up all submodules when necessary
-ok 20 - '--recurse-submodules=on-demand' doesn't recurse when no new commits are fetched in the superproject (and ignores config)
-ok 21 - '--recurse-submodules=on-demand' recurses as deep as necessary (and ignores config)
-ok 22 - '--recurse-submodules=on-demand' stops when no new submodule commits are found in the superproject (and ignores config)
-ok 23 - 'fetch.recurseSubmodules=on-demand' overrides global config
-ok 24 - 'submodule.<sub>.fetchRecurseSubmodules=on-demand' overrides fetch.recurseSubmodules
-ok 25 - don't fetch submodule when newly recorded commits are already present
-# passed all 25 test(s)
-1..25
+ok 3 - fetch --recurse-submodules -j2 has the same output behaviour
+ok 4 - fetch alone only fetches superproject
+ok 5 - fetch --no-recurse-submodules only fetches superproject
+ok 6 - using fetchRecurseSubmodules=true in .gitmodules recurses into submodules
+ok 7 - --no-recurse-submodules overrides .gitmodules config
+ok 8 - using fetchRecurseSubmodules=false in .git/config overrides setting in .gitmodules
+ok 9 - --recurse-submodules overrides fetchRecurseSubmodules setting from .git/config
+ok 10 - --quiet propagates to submodules
+ok 11 - --quiet propagates to parallel submodules
+ok 12 - --dry-run propagates to submodules
+ok 13 - Without --dry-run propagates to submodules
+ok 14 - recurseSubmodules=true propagates into submodules
+ok 15 - --recurse-submodules overrides config in submodule
+ok 16 - --no-recurse-submodules overrides config setting
+ok 17 - Recursion doesn't happen when no new commits are fetched in the superproject
+ok 18 - Recursion stops when no new submodule commits are fetched
+ok 19 - Recursion doesn't happen when new superproject commits don't change any submodules
+ok 20 - Recursion picks up config in submodule
+ok 21 - Recursion picks up all submodules when necessary
+ok 22 - '--recurse-submodules=on-demand' doesn't recurse when no new commits are fetched in the superproject (and ignores config)
+ok 23 - '--recurse-submodules=on-demand' recurses as deep as necessary (and ignores config)
+ok 24 - '--recurse-submodules=on-demand' stops when no new submodule commits are found in the superproject (and ignores config)
+ok 25 - 'fetch.recurseSubmodules=on-demand' overrides global config
+ok 26 - 'submodule.<sub>.fetchRecurseSubmodules=on-demand' overrides fetch.recurseSubmodules
+ok 27 - don't fetch submodule when newly recorded commits are already present
+ok 28 - fetching submodules respects parallel settings
+ok 29 - fetching submodule into a broken repository
+# passed all 29 test(s)
+1..29
 *** t5527-fetch-odd-refs.sh ***
 ok 1 - setup repo with odd suffix ref
 ok 2 - suffix ref is ignored during fetch
@@ -9711,23 +10408,24 @@
 ok 4 - "upstream" does not push on unconfigured branch
 ok 5 - "upstream" does not push when remotes do not match
 ok 6 - push from/to new branch with upstream, matching and simple
-ok 7 - push from/to new branch with current creates remote branch
-ok 8 - push to existing branch, with no upstream configured
-ok 9 - push to existing branch, upstream configured with same name
-ok 10 - push to existing branch, upstream configured with different name
-ok 11 - push.default = current success in central workflows
-ok 12 - push.default = upstream success in central workflows
-ok 13 - push.default = simple failure in central workflows
-ok 14 - push.default = matching success in central workflows
-ok 15 - push.default = current success in triangular workflows
-ok 16 - push.default = upstream failure in triangular workflows
-ok 17 - push.default = simple success in triangular workflows
-ok 18 - push.default = matching success in triangular workflows
-ok 19 - default behavior allows "simple" push
-ok 20 - default behavior rejects non-simple push
-ok 21 - default triangular behavior acts like "current"
-# passed all 21 test(s)
-1..21
+ok 7 - push ambiguously named branch with upstream, matching and simple
+ok 8 - push from/to new branch with current creates remote branch
+ok 9 - push to existing branch, with no upstream configured
+ok 10 - push to existing branch, upstream configured with same name
+ok 11 - push to existing branch, upstream configured with different name
+ok 12 - push.default = current success in central workflows
+ok 13 - push.default = upstream success in central workflows
+ok 14 - push.default = simple failure in central workflows
+ok 15 - push.default = matching success in central workflows
+ok 16 - push.default = current success in triangular workflows
+ok 17 - push.default = upstream failure in triangular workflows
+ok 18 - push.default = simple success in triangular workflows
+ok 19 - push.default = matching success in triangular workflows
+ok 20 - default behavior allows "simple" push
+ok 21 - default behavior rejects non-simple push
+ok 22 - default triangular behavior acts like "current"
+# passed all 22 test(s)
+1..22
 *** t5529-push-errors.sh ***
 ok 1 - setup commits
 ok 2 - setup remote
@@ -9770,14 +10468,18 @@
 ok 17 - push unpushed submodules when not needed 2
 ok 18 - push unpushed submodules recursively
 ok 19 - push unpushable submodule recursively fails
-# passed all 19 test(s)
-1..19
+ok 20 - push --dry-run does not recursively update submodules
+ok 21 - push --dry-run does not recursively update submodules
+ok 22 - push only unpushed submodules recursively
+# passed all 22 test(s)
+1..22
 *** t5532-fetch-proxy.sh ***
 ok 1 - setup remote repo
-ok 2 - setup local repo
-ok 3 - fetch through proxy works
-# passed all 3 test(s)
-1..3
+ok 2 - setup proxy script
+ok 3 - setup local repo
+ok 4 - fetch through proxy works
+# passed all 4 test(s)
+1..4
 *** t5533-push-cas.sh ***
 ok 1 - setup
 ok 2 - push to update (protected)
@@ -9792,8 +10494,11 @@
 ok 11 - push to delete (allowed)
 ok 12 - cover everything with default force-with-lease (protected)
 ok 13 - cover everything with default force-with-lease (allowed)
-# passed all 13 test(s)
-1..13
+ok 14 - new branch covered by force-with-lease
+ok 15 - new branch covered by force-with-lease (explicit)
+ok 16 - new branch already exists
+# passed all 16 test(s)
+1..16
 *** t5534-push-signed.sh ***
 ok 1 - setup
 ok 2 - unsigned push does not send push certificate
@@ -9846,8 +10551,13 @@
 ok 1 - setup shallow clone
 ok 2 - clone http repository
 ok 3 - no shallow lines after receiving ACK ready
-# passed all 3 test(s)
-1..3
+ok 4 - clone shallow since ...
+ok 5 - fetch shallow since ...
+ok 6 - shallow clone exclude tag two
+ok 7 - fetch exclude tag one
+ok 8 - fetching deepen
+# passed all 8 test(s)
+1..8
 *** t5540-http-push-webdav.sh ***
 ok 1 - setup remote repository
 ok 2 - create password-protected repository
@@ -9906,8 +10616,9 @@
 ok 32 - push into half-auth-complete requires password
 ok 33 - push 2000 tags over http
 ok 34 - push with post-receive to inspect certificate
-# passed all 34 test(s)
-1..34
+ok 35 - push status output scrubs password
+# passed all 35 test(s)
+1..35
 *** t5542-push-http-shallow.sh ***
 ok 1 - setup
 ok 2 - push to shallow repo via http
@@ -9925,6 +10636,46 @@
 ok 8 - atomic push is not advertised if configured
 # passed all 8 test(s)
 1..8
+*** t5544-pack-objects-hook.sh ***
+ok 1 - create some history to fetch
+ok 2 - create debugging hook script
+ok 3 - hook runs via global config
+ok 4 - hook outputs are sane
+ok 5 - hook runs from -c config
+ok 6 - hook does not run from repo config
+# passed all 6 test(s)
+1..6
+*** t5545-push-options.sh ***
+ok 1 - one push option works for a single branch
+ok 2 - push option denied by remote
+ok 3 - two push options work
+ok 4 - push option denied properly by http remote helper
+# passed all 4 test(s)
+1..4
+*** t5546-receive-limits.sh ***
+ok 1 - create known-size (1024 bytes) commit
+ok 2 - prepare destination repository
+ok 3 - set unpacklimit to 1
+ok 4 - setting receive.maxInputSize to 512 rejects push
+ok 5 - bumping limit to 4k allows push
+ok 6 - prepare destination repository (again)
+ok 7 - lifting the limit allows push
+ok 8 - prepare destination repository
+ok 9 - set unpacklimit to 10000
+ok 10 - setting receive.maxInputSize to 512 rejects push
+ok 11 - bumping limit to 4k allows push
+ok 12 - prepare destination repository (again)
+ok 13 - lifting the limit allows push
+# passed all 13 test(s)
+1..13
+*** t5547-push-quarantine.sh ***
+ok 1 - create picky dest repo
+ok 2 - accepted objects work
+ok 3 - rejected objects are not installed
+ok 4 - rejected objects are removed
+ok 5 - push to repo path with path separator (colon)
+# passed all 5 test(s)
+1..5
 *** t5550-http-fetch-dumb.sh ***
 ok 1 - setup repository
 ok 2 - create http-accessible bare repository with loose objects
@@ -9938,25 +10689,38 @@
 ok 10 - http auth respects credential helper config
 ok 11 - http auth can get username from config
 ok 12 - configured username does not override URL
-ok 13 - fetch changes via http
-ok 14 - fetch changes via manual http-fetch
-ok 15 - http remote detects correct HEAD
-ok 16 - fetch packed objects
-ok 17 - fetch notices corrupt pack
-ok 18 - fetch notices corrupt idx
-ok 19 - fetch can handle previously-fetched .idx files
-ok 20 - did not use upload-pack service
-ok 21 - git client shows text/plain errors
-ok 22 - git client does not show html errors
-ok 23 - git client shows text/plain with a charset
-ok 24 - http error messages are reencoded
-ok 25 - reencoding is robust to whitespace oddities
-ok 26 - git client sends Accept-Language based on LANGUAGE
-ok 27 - git client sends Accept-Language correctly with unordinary LANGUAGE
-ok 28 - git client sends Accept-Language with many preferred languages
-ok 29 - git client does not send an empty Accept-Language
-# passed all 29 test(s)
-1..29
+ok 13 - set up repo with http submodules
+ok 14 - cmdline credential config passes to submodule via clone
+ok 15 - cmdline credential config passes submodule via fetch
+ok 16 - cmdline credential config passes submodule update
+ok 17 - fetch changes via http
+ok 18 - fetch changes via manual http-fetch
+ok 19 - http remote detects correct HEAD
+ok 20 - fetch packed objects
+ok 21 - fetch notices corrupt pack
+ok 22 - fetch notices corrupt idx
+ok 23 - fetch can handle previously-fetched .idx files
+ok 24 - did not use upload-pack service
+ok 25 - git client shows text/plain errors
+ok 26 - git client does not show html errors
+ok 27 - git client shows text/plain with a charset
+ok 28 - http error messages are reencoded
+ok 29 - reencoding is robust to whitespace oddities
+ok 30 - git client sends Accept-Language based on LANGUAGE
+ok 31 - git client sends Accept-Language correctly with unordinary LANGUAGE
+ok 32 - git client sends Accept-Language with many preferred languages
+ok 33 - git client does not send an empty Accept-Language
+ok 34 - remote-http complains cleanly about malformed urls
+ok 35 - redirects can be forbidden/allowed
+ok 36 - redirects are reported to stderr
+ok 37 - non-initial redirects can be forbidden
+ok 38 - http.followRedirects defaults to "initial"
+ok 39 - set up evil alternates scheme
+ok 40 - http-alternates is a non-initial redirect
+ok 41 - http-alternates cannot point at funny protocols
+ok 42 - http-alternates triggers not-from-user protocol check
+# passed all 42 test(s)
+1..42
 *** t5551-http-fetch-smart.sh ***
 ok 1 - setup repository
 ok 2 - create http-accessible bare repository
@@ -9967,25 +10731,30 @@
 ok 7 - follow redirects (301)
 ok 8 - follow redirects (302)
 ok 9 - redirects re-root further requests
-ok 10 - clone from password-protected repository
-ok 11 - clone from auth-only-for-push repository
-ok 12 - clone from auth-only-for-objects repository
-ok 13 - no-op half-auth fetch does not require a password
-ok 14 - redirects send auth to new location
-ok 15 - disable dumb http on server
-ok 16 - GIT_SMART_HTTP can disable smart http
-ok 17 - invalid Content-Type rejected
-ok 18 - create namespaced refs
-ok 19 - smart clone respects namespace
-ok 20 - dumb clone via http-backend respects namespace
-ok 21 - cookies stored in http.cookiefile when http.savecookies set
-ok 22 - transfer.hiderefs works over smart-http
-ok 23 - create 2,000 tags in the repo
-ok 24 - clone the 2,000 tag repo to check OS command line overflow
-ok 25 - large fetch-pack requests can be split across POSTs
-ok 26 # skip http can handle enormous ref negotiation (missing EXPENSIVE)
-# passed all 26 test(s)
-1..26
+ok 10 - re-rooting dies on insane schemes
+ok 11 - clone from password-protected repository
+ok 12 - clone from auth-only-for-push repository
+ok 13 - clone from auth-only-for-objects repository
+ok 14 - no-op half-auth fetch does not require a password
+ok 15 - redirects send auth to new location
+ok 16 - disable dumb http on server
+ok 17 - GIT_SMART_HTTP can disable smart http
+ok 18 - invalid Content-Type rejected
+ok 19 - create namespaced refs
+ok 20 - smart clone respects namespace
+ok 21 - dumb clone via http-backend respects namespace
+ok 22 - cookies stored in http.cookiefile when http.savecookies set
+ok 23 - transfer.hiderefs works over smart-http
+ok 24 - create 2,000 tags in the repo
+ok 25 - clone the 2,000 tag repo to check OS command line overflow
+ok 26 - large fetch-pack requests can be split across POSTs
+ok 27 - test allowreachablesha1inwant
+ok 28 - test allowreachablesha1inwant with unreachable
+ok 29 - test allowanysha1inwant with unreachable
+ok 30 # skip http can handle enormous ref negotiation (missing EXPENSIVE)
+ok 31 - custom http headers
+# passed all 31 test(s)
+1..31
 *** t5560-http-backend-noserver.sh ***
 ok 1 - setup repository
 ok 2 - direct refs/heads/master not found
@@ -10025,22 +10794,24 @@
 ok 2 - create git-accessible bare repository
 ok 3 - clone git repository
 ok 4 - fetch changes via git protocol
-ok 5 - remote detects correct HEAD
-ok 6 - prepare pack objects
-ok 7 - fetch notices corrupt pack
-ok 8 - fetch notices corrupt idx
-ok 9 - clone non-existent
-ok 10 - push disabled
-ok 11 - read access denied
-ok 12 - not exported
-ok 13 - clone non-existent
-ok 14 - push disabled
-ok 15 - read access denied
-ok 16 - not exported
-ok 17 - access repo via interpolated hostname
-ok 18 - hostname cannot break out of directory
-# passed all 18 test(s)
-1..18
+ok 5 - no-op fetch -v stderr is as expected
+ok 6 - no-op fetch without "-v" is quiet
+ok 7 - remote detects correct HEAD
+ok 8 - prepare pack objects
+ok 9 - fetch notices corrupt pack
+ok 10 - fetch notices corrupt idx
+ok 11 - clone non-existent
+ok 12 - push disabled
+ok 13 - read access denied
+ok 14 - not exported
+ok 15 - clone non-existent
+ok 16 - push disabled
+ok 17 - read access denied
+ok 18 - not exported
+ok 19 - access repo via interpolated hostname
+ok 20 - hostname cannot break out of directory
+# passed all 20 test(s)
+1..20
 *** t5571-pre-push-hook.sh ***
 ok 1 - setup
 ok 2 - push with failing hook
@@ -10115,6 +10886,8 @@
 # still have 11 known breakage(s)
 # passed all remaining 45 test(s)
 1..56
+*** t5580-clone-push-unc.sh ***
+1..0 # SKIP skipping UNC path tests, requires Windows
 *** t5600-clone-fail-cleanup.sh ***
 ok 1 - clone of non-existent source should fail
 ok 2 - failed clone should not leave a directory
@@ -10132,85 +10905,86 @@
 ok 5 - clone does not keep pack
 ok 6 - clone checks out files
 ok 7 - clone respects GIT_WORK_TREE
-ok 8 - clone creates intermediate directories
-ok 9 - clone creates intermediate directories for bare repo
-ok 10 - clone --mirror
-ok 11 - clone --mirror with detached HEAD
-ok 12 - clone --bare with detached HEAD
-ok 13 - clone --bare names the local repository <name>.git
-ok 14 - clone --mirror does not repeat tags
-ok 15 - clone to destination with trailing /
-ok 16 - clone to destination with extra trailing /
-ok 17 - clone to an existing empty directory
-ok 18 - clone to an existing non-empty directory
-ok 19 - clone to an existing path
-ok 20 - clone a void
-ok 21 - clone respects global branch.autosetuprebase
-ok 22 - respect url-encoding of file://
-ok 23 - do not query-string-decode + in URLs
-ok 24 - do not respect url-encoding of non-url path
-ok 25 - clone separate gitdir
-ok 26 - clone separate gitdir: output
-ok 27 - clone from .git file
-ok 28 - fetch from .git gitfile
-ok 29 - fetch from gitfile parent
-ok 30 - clone separate gitdir where target already exists
-ok 31 - clone --reference from original
-ok 32 - clone with more than one --reference
-ok 33 - clone from original with relative alternate
-ok 34 - clone checking out a tag
-ok 35 - setup ssh wrapper
-ok 36 - clone myhost:src uses ssh
-ok 37 - clone local path foo:bar
-ok 38 - bracketed hostnames are still ssh
-ok 39 - uplink is not treated as putty
-ok 40 - plink is treated specially (as putty)
-ok 41 - plink.exe is treated specially (as putty)
-ok 42 - tortoiseplink is like putty, with extra arguments
-ok 43 - setup ssh wrapper
-ok 44 - clone c:temp is ssl
-ok 45 # skip clone c:temp is dos drive (missing MINGW)
-ok 46 - clone host:rep
-ok 47 - clone host:rep/home/project
-ok 48 - clone host:123
-ok 49 - clone [::1]:rep
-ok 50 - clone [::1]:rep/home/project
-ok 51 - clone [::1]:123
-ok 52 - clone host:/~repo
-ok 53 - clone [::1]:/~repo
-ok 54 - clone foo/bar:baz is not ssh
-ok 55 - clone [foo]bar/baz:qux is not ssh
-ok 56 - clone [foo/bar]:baz is not ssh
-ok 57 - clone ssh://host.xz/home/user/repo
-ok 58 - clone ssh://host.xz/~repo
-ok 59 - clone ssh://host.xz:/home/user/repo
-ok 60 - clone ssh://host.xz:/~repo
-ok 61 - clone ssh://host.xz:22/home/user/repo
-ok 62 - clone ssh://host.xz:22/~repo
-ok 63 - clone ssh://::1/home/user/repo
-ok 64 - clone ssh://[::1]/home/user/repo
-ok 65 - clone ssh://[::1]:/home/user/repo
-ok 66 - clone ssh://[email protected]::1/home/user/repo
-ok 67 - clone ssh://[email protected][::1]/home/user/repo
-ok 68 - clone ssh://[email protected][::1]:/home/user/repo
-ok 69 - clone ssh://[[email protected]::1]/home/user/repo
-ok 70 - clone ssh://[[email protected]::1]:/home/user/repo
-ok 71 - clone ssh://::1/~repo
-ok 72 - clone ssh://[::1]/~repo
-ok 73 - clone ssh://[email protected]::1/~repo
-ok 74 - clone ssh://[email protected][::1]/~repo
-ok 75 - clone ssh://[[email protected]::1]/~repo
-ok 76 - clone ssh://[::1]:22/home/user/repo
-ok 77 - clone ssh://[email protected][::1]:22/home/user/repo
-ok 78 - clone ssh://[[email protected]::1]:22/home/user/repo
-ok 79 - clone ssh://[::1]:22/~repo
-ok 80 - clone ssh://[email protected][::1]:22/~repo
-ok 81 - clone ssh://[[email protected]::1]:22/~repo
-ok 82 - clone from a repository with two identical branches
-ok 83 - shallow clone locally
-ok 84 - GIT_TRACE_PACKFILE produces a usable pack
-# passed all 84 test(s)
-1..84
+ok 8 - clone from hooks
+ok 9 - clone creates intermediate directories
+ok 10 - clone creates intermediate directories for bare repo
+ok 11 - clone --mirror
+ok 12 - clone --mirror with detached HEAD
+ok 13 - clone --bare with detached HEAD
+ok 14 - clone --bare names the local repository <name>.git
+ok 15 - clone --mirror does not repeat tags
+ok 16 - clone to destination with trailing /
+ok 17 - clone to destination with extra trailing /
+ok 18 - clone to an existing empty directory
+ok 19 - clone to an existing non-empty directory
+ok 20 - clone to an existing path
+ok 21 - clone a void
+ok 22 - clone respects global branch.autosetuprebase
+ok 23 - respect url-encoding of file://
+ok 24 - do not query-string-decode + in URLs
+ok 25 - do not respect url-encoding of non-url path
+ok 26 - clone separate gitdir
+ok 27 - clone separate gitdir: output
+ok 28 - clone from .git file
+ok 29 - fetch from .git gitfile
+ok 30 - fetch from gitfile parent
+ok 31 - clone separate gitdir where target already exists
+ok 32 - clone --reference from original
+ok 33 - clone with more than one --reference
+ok 34 - clone from original with relative alternate
+ok 35 - clone checking out a tag
+ok 36 - setup ssh wrapper
+ok 37 - clone myhost:src uses ssh
+ok 38 - clone local path foo:bar
+ok 39 - bracketed hostnames are still ssh
+ok 40 - uplink is not treated as putty
+ok 41 - plink is treated specially (as putty)
+ok 42 - plink.exe is treated specially (as putty)
+ok 43 - tortoiseplink is like putty, with extra arguments
+ok 44 - setup ssh wrapper
+ok 45 - clone c:temp is ssl
+ok 46 # skip clone c:temp is dos drive (missing MINGW)
+ok 47 - clone host:rep
+ok 48 - clone host:rep/home/project
+ok 49 - clone host:123
+ok 50 - clone [::1]:rep
+ok 51 - clone [::1]:rep/home/project
+ok 52 - clone [::1]:123
+ok 53 - clone host:/~repo
+ok 54 - clone [::1]:/~repo
+ok 55 - clone foo/bar:baz is not ssh
+ok 56 - clone [foo]bar/baz:qux is not ssh
+ok 57 - clone [foo/bar]:baz is not ssh
+ok 58 - clone ssh://host.xz/home/user/repo
+ok 59 - clone ssh://host.xz/~repo
+ok 60 - clone ssh://host.xz:/home/user/repo
+ok 61 - clone ssh://host.xz:/~repo
+ok 62 - clone ssh://host.xz:22/home/user/repo
+ok 63 - clone ssh://host.xz:22/~repo
+ok 64 - clone ssh://::1/home/user/repo
+ok 65 - clone ssh://[::1]/home/user/repo
+ok 66 - clone ssh://[::1]:/home/user/repo
+ok 67 - clone ssh://[email protected]::1/home/user/repo
+ok 68 - clone ssh://[email protected][::1]/home/user/repo
+ok 69 - clone ssh://[email protected][::1]:/home/user/repo
+ok 70 - clone ssh://[[email protected]::1]/home/user/repo
+ok 71 - clone ssh://[[email protected]::1]:/home/user/repo
+ok 72 - clone ssh://::1/~repo
+ok 73 - clone ssh://[::1]/~repo
+ok 74 - clone ssh://[email protected]::1/~repo
+ok 75 - clone ssh://[email protected][::1]/~repo
+ok 76 - clone ssh://[[email protected]::1]/~repo
+ok 77 - clone ssh://[::1]:22/home/user/repo
+ok 78 - clone ssh://[email protected][::1]:22/home/user/repo
+ok 79 - clone ssh://[[email protected]::1]:22/home/user/repo
+ok 80 - clone ssh://[::1]:22/~repo
+ok 81 - clone ssh://[email protected][::1]:22/~repo
+ok 82 - clone ssh://[[email protected]::1]:22/~repo
+ok 83 - clone from a repository with two identical branches
+ok 84 - shallow clone locally
+ok 85 - GIT_TRACE_PACKFILE produces a usable pack
+# passed all 85 test(s)
+1..85
 *** t5602-clone-remote-exec.sh ***
 ok 1 - setup
 ok 2 - clone calls git upload-pack unqualified with no -u option
@@ -10267,7 +11041,7 @@
 ok 47 - clone of ssh://user:[email protected]/test:1234.git goes to 1234 (non-bare)
 # passed all 47 test(s)
 1..47
-*** t5700-clone-reference.sh ***
+*** t5604-clone-reference.sh ***
 ok 1 - preparing first repository
 ok 2 - preparing second repository
 ok 3 - cloning with reference (-l -s)
@@ -10299,7 +11073,7 @@
 ok 29 - clone, dissociate from alternates
 # passed all 29 test(s)
 1..29
-*** t5701-clone-local.sh ***
+*** t5605-clone-local.sh ***
 ok 1 - preparing origin repository
 ok 2 - local clone without .git suffix
 ok 3 - local clone with .git suffix
@@ -10322,14 +11096,14 @@
 ok 20 - cloning locally respects "-u" for fetching refs
 # passed all 20 test(s)
 1..20
-*** t5702-clone-options.sh ***
+*** t5606-clone-options.sh ***
 ok 1 - setup
 ok 2 - clone -o
 ok 3 - redirected clone does not show progress
 ok 4 - redirected clone -v does show progress
 # passed all 4 test(s)
 1..4
-*** t5704-bundle.sh ***
+*** t5607-clone-bundle.sh ***
 ok 1 - setup
 ok 2 - annotated tags can be excluded by rev-list options
 ok 3 - die if bundle file cannot be created
@@ -10341,14 +11115,14 @@
 # still have 2 known breakage(s)
 # passed all remaining 6 test(s)
 1..8
-*** t5705-clone-2gb.sh ***
+*** t5608-clone-2gb.sh ***
 Skipping expensive 2GB clone test; enable it with GIT_TEST_CLONE_2GB=t
 ok 1 # skip setup (missing CLONE_2GB)
 ok 2 # skip clone - bare (missing CLONE_2GB)
 ok 3 # skip clone - with worktree, file:// protocol (missing CLONE_2GB)
 # passed all 3 test(s)
 1..3
-*** t5706-clone-branch.sh ***
+*** t5609-clone-branch.sh ***
 ok 1 - setup
 ok 2 - vanilla clone chooses HEAD
 ok 3 - clone -b chooses specified branch
@@ -10358,7 +11132,7 @@
 ok 7 - clone -b not allowed with empty repos
 # passed all 7 test(s)
 1..7
-*** t5707-clone-detached.sh ***
+*** t5610-clone-detached.sh ***
 ok 1 - setup
 ok 2 - clone repo (detached HEAD points to branch)
 ok 3 - cloned HEAD matches
@@ -10375,14 +11149,15 @@
 # still have 1 known breakage(s)
 # passed all remaining 12 test(s)
 1..13
-*** t5708-clone-config.sh ***
+*** t5611-clone-config.sh ***
 ok 1 - clone -c sets config in cloned repo
 ok 2 - clone -c can set multi-keys
 ok 3 - clone -c without a value is boolean true
 ok 4 - clone -c config is available during clone
-# passed all 4 test(s)
-1..4
-*** t5709-clone-refspec.sh ***
+ok 5 # skip clone -c core.hideDotFiles (missing MINGW)
+# passed all 5 test(s)
+1..5
+*** t5612-clone-refspec.sh ***
 ok 1 - setup
 ok 2 - by default all branches will be kept updated
 ok 3 - by default no tags will be kept updated
@@ -10395,20 +11170,46 @@
 ok 10 - --single-branch with detached
 # passed all 10 test(s)
 1..10
-*** t5710-info-alternate.sh ***
+*** t5613-info-alternate.sh ***
 ok 1 - preparing first repository
 ok 2 - preparing second repository
 ok 3 - preparing third repository
-ok 4 - creating too deep nesting
-ok 5 - invalidity of deepest repository
-ok 6 - validity of third repository
-ok 7 - validity of fourth repository
+ok 4 - count-objects shows the alternates
+ok 5 - creating too deep nesting
+ok 6 - validity of seventh repository
+ok 7 - invalidity of eighth repository
 ok 8 - breaking of loops
 ok 9 - that info/alternates is necessary
 ok 10 - that relative alternate is possible for current dir
-ok 11 - that relative alternate is only possible for current dir
-# passed all 11 test(s)
-1..11
+ok 11 - that relative alternate is recursive
+ok 12 - relative duplicates are eliminated
+ok 13 # skip dup finding can be case-insensitive (missing CASE_INSENSITIVE_FS)
+# passed all 13 test(s)
+1..13
+*** t5614-clone-submodules.sh ***
+ok 1 - setup
+ok 2 - nonshallow clone implies nonshallow submodule
+ok 3 - shallow clone with shallow submodule
+ok 4 - shallow clone does not imply shallow submodule
+ok 5 - shallow clone with non shallow submodule
+ok 6 - non shallow clone with shallow submodule
+ok 7 - clone follows shallow recommendation
+ok 8 - get unshallow recommended shallow submodule
+ok 9 - clone follows non shallow recommendation
+# passed all 9 test(s)
+1..9
+*** t5615-alternate-env.sh ***
+ok 1 - create alternate repositories
+ok 2 - objects inaccessible without alternates
+ok 3 - access alternate via absolute path
+ok 4 - access multiple alternates
+ok 5 - access alternate via relative path (bare)
+ok 6 - access alternate via relative path (worktree)
+ok 7 - access alternate via relative path (subdir)
+ok 8 - mix of quoted and unquoted alternates
+ok 9 - broken quoting falls back to interpreting raw
+# passed all 9 test(s)
+1..9
 *** t5801-remote-helpers.sh ***
 ok 1 - setup repository
 ok 2 - cloning from local repo
@@ -10462,14 +11263,52 @@
 ok 5 - push file:// (disabled)
 ok 6 - fetch file:// (disabled)
 ok 7 - clone file:// (disabled)
-ok 8 - clone path (enabled)
-ok 9 - fetch path (enabled)
-ok 10 - push path (enabled)
-ok 11 - push path (disabled)
-ok 12 - fetch path (disabled)
-ok 13 - clone path (disabled)
-# passed all 13 test(s)
-1..13
+ok 8 - clone file:// (env var has precedence)
+ok 9 - clone file:// (enabled with config)
+ok 10 - fetch file:// (enabled)
+ok 11 - push file:// (enabled)
+ok 12 - push file:// (disabled)
+ok 13 - fetch file:// (disabled)
+ok 14 - clone file:// (disabled)
+ok 15 - clone file:// (enabled)
+ok 16 - fetch file:// (enabled)
+ok 17 - push file:// (enabled)
+ok 18 - push file:// (disabled)
+ok 19 - fetch file:// (disabled)
+ok 20 - clone file:// (disabled)
+ok 21 - clone file:// (enabled)
+ok 22 - fetch file:// (enabled)
+ok 23 - push file:// (enabled)
+ok 24 - push file:// (disabled)
+ok 25 - fetch file:// (disabled)
+ok 26 - clone file:// (disabled)
+ok 27 - clone path (enabled)
+ok 28 - fetch path (enabled)
+ok 29 - push path (enabled)
+ok 30 - push path (disabled)
+ok 31 - fetch path (disabled)
+ok 32 - clone path (disabled)
+ok 33 - clone path (env var has precedence)
+ok 34 - clone path (enabled with config)
+ok 35 - fetch path (enabled)
+ok 36 - push path (enabled)
+ok 37 - push path (disabled)
+ok 38 - fetch path (disabled)
+ok 39 - clone path (disabled)
+ok 40 - clone path (enabled)
+ok 41 - fetch path (enabled)
+ok 42 - push path (enabled)
+ok 43 - push path (disabled)
+ok 44 - fetch path (disabled)
+ok 45 - clone path (disabled)
+ok 46 - clone path (enabled)
+ok 47 - fetch path (enabled)
+ok 48 - push path (enabled)
+ok 49 - push path (disabled)
+ok 50 - fetch path (disabled)
+ok 51 - clone path (disabled)
+# passed all 51 test(s)
+1..51
 *** t5811-proto-disable-git.sh ***
 ok 1 - create git-accessible repo
 ok 2 - clone git:// (enabled)
@@ -10478,8 +11317,27 @@
 ok 5 - push git:// (disabled)
 ok 6 - fetch git:// (disabled)
 ok 7 - clone git:// (disabled)
-# passed all 7 test(s)
-1..7
+ok 8 - clone git:// (env var has precedence)
+ok 9 - clone git:// (enabled with config)
+ok 10 - fetch git:// (enabled)
+ok 11 - push git:// (enabled)
+ok 12 - push git:// (disabled)
+ok 13 - fetch git:// (disabled)
+ok 14 - clone git:// (disabled)
+ok 15 - clone git:// (enabled)
+ok 16 - fetch git:// (enabled)
+ok 17 - push git:// (enabled)
+ok 18 - push git:// (disabled)
+ok 19 - fetch git:// (disabled)
+ok 20 - clone git:// (disabled)
+ok 21 - clone git:// (enabled)
+ok 22 - fetch git:// (enabled)
+ok 23 - push git:// (enabled)
+ok 24 - push git:// (disabled)
+ok 25 - fetch git:// (disabled)
+ok 26 - clone git:// (disabled)
+# passed all 26 test(s)
+1..26
 *** t5812-proto-disable-http.sh ***
 ok 1 - create git-accessible repo
 ok 2 - clone smart http (enabled)
@@ -10488,10 +11346,30 @@
 ok 5 - push smart http (disabled)
 ok 6 - fetch smart http (disabled)
 ok 7 - clone smart http (disabled)
-ok 8 - curl redirects respect whitelist
-ok 9 - curl limits redirects
-# passed all 9 test(s)
-1..9
+ok 8 - clone smart http (env var has precedence)
+ok 9 - clone smart http (enabled with config)
+ok 10 - fetch smart http (enabled)
+ok 11 - push smart http (enabled)
+ok 12 - push smart http (disabled)
+ok 13 - fetch smart http (disabled)
+ok 14 - clone smart http (disabled)
+ok 15 - clone smart http (enabled)
+ok 16 - fetch smart http (enabled)
+ok 17 - push smart http (enabled)
+ok 18 - push smart http (disabled)
+ok 19 - fetch smart http (disabled)
+ok 20 - clone smart http (disabled)
+ok 21 - clone smart http (enabled)
+ok 22 - fetch smart http (enabled)
+ok 23 - push smart http (enabled)
+ok 24 - push smart http (disabled)
+ok 25 - fetch smart http (disabled)
+ok 26 - clone smart http (disabled)
+ok 27 - curl redirects respect whitelist
+ok 28 - curl limits redirects
+ok 29 - http can be limited to from-user
+# passed all 29 test(s)
+1..29
 *** t5813-proto-disable-ssh.sh ***
 ok 1 - setup ssh wrapper
 ok 2 - setup repository to clone
@@ -10501,20 +11379,77 @@
 ok 6 - push host:path (disabled)
 ok 7 - fetch host:path (disabled)
 ok 8 - clone host:path (disabled)
-ok 9 - clone ssh:// (enabled)
-ok 10 - fetch ssh:// (enabled)
-ok 11 - push ssh:// (enabled)
-ok 12 - push ssh:// (disabled)
-ok 13 - fetch ssh:// (disabled)
-ok 14 - clone ssh:// (disabled)
-ok 15 - clone git+ssh:// (enabled)
-ok 16 - fetch git+ssh:// (enabled)
-ok 17 - push git+ssh:// (enabled)
-ok 18 - push git+ssh:// (disabled)
-ok 19 - fetch git+ssh:// (disabled)
-ok 20 - clone git+ssh:// (disabled)
-# passed all 20 test(s)
-1..20
+ok 9 - clone host:path (env var has precedence)
+ok 10 - clone host:path (enabled with config)
+ok 11 - fetch host:path (enabled)
+ok 12 - push host:path (enabled)
+ok 13 - push host:path (disabled)
+ok 14 - fetch host:path (disabled)
+ok 15 - clone host:path (disabled)
+ok 16 - clone host:path (enabled)
+ok 17 - fetch host:path (enabled)
+ok 18 - push host:path (enabled)
+ok 19 - push host:path (disabled)
+ok 20 - fetch host:path (disabled)
+ok 21 - clone host:path (disabled)
+ok 22 - clone host:path (enabled)
+ok 23 - fetch host:path (enabled)
+ok 24 - push host:path (enabled)
+ok 25 - push host:path (disabled)
+ok 26 - fetch host:path (disabled)
+ok 27 - clone host:path (disabled)
+ok 28 - clone ssh:// (enabled)
+ok 29 - fetch ssh:// (enabled)
+ok 30 - push ssh:// (enabled)
+ok 31 - push ssh:// (disabled)
+ok 32 - fetch ssh:// (disabled)
+ok 33 - clone ssh:// (disabled)
+ok 34 - clone ssh:// (env var has precedence)
+ok 35 - clone ssh:// (enabled with config)
+ok 36 - fetch ssh:// (enabled)
+ok 37 - push ssh:// (enabled)
+ok 38 - push ssh:// (disabled)
+ok 39 - fetch ssh:// (disabled)
+ok 40 - clone ssh:// (disabled)
+ok 41 - clone ssh:// (enabled)
+ok 42 - fetch ssh:// (enabled)
+ok 43 - push ssh:// (enabled)
+ok 44 - push ssh:// (disabled)
+ok 45 - fetch ssh:// (disabled)
+ok 46 - clone ssh:// (disabled)
+ok 47 - clone ssh:// (enabled)
+ok 48 - fetch ssh:// (enabled)
+ok 49 - push ssh:// (enabled)
+ok 50 - push ssh:// (disabled)
+ok 51 - fetch ssh:// (disabled)
+ok 52 - clone ssh:// (disabled)
+ok 53 - clone git+ssh:// (enabled)
+ok 54 - fetch git+ssh:// (enabled)
+ok 55 - push git+ssh:// (enabled)
+ok 56 - push git+ssh:// (disabled)
+ok 57 - fetch git+ssh:// (disabled)
+ok 58 - clone git+ssh:// (disabled)
+ok 59 - clone git+ssh:// (env var has precedence)
+ok 60 - clone git+ssh:// (enabled with config)
+ok 61 - fetch git+ssh:// (enabled)
+ok 62 - push git+ssh:// (enabled)
+ok 63 - push git+ssh:// (disabled)
+ok 64 - fetch git+ssh:// (disabled)
+ok 65 - clone git+ssh:// (disabled)
+ok 66 - clone git+ssh:// (enabled)
+ok 67 - fetch git+ssh:// (enabled)
+ok 68 - push git+ssh:// (enabled)
+ok 69 - push git+ssh:// (disabled)
+ok 70 - fetch git+ssh:// (disabled)
+ok 71 - clone git+ssh:// (disabled)
+ok 72 - clone git+ssh:// (enabled)
+ok 73 - fetch git+ssh:// (enabled)
+ok 74 - push git+ssh:// (enabled)
+ok 75 - push git+ssh:// (disabled)
+ok 76 - fetch git+ssh:// (disabled)
+ok 77 - clone git+ssh:// (disabled)
+# passed all 77 test(s)
+1..77
 *** t5814-proto-disable-ext.sh ***
 ok 1 - setup ext wrapper
 ok 2 - setup repository to clone
@@ -10524,8 +11459,27 @@
 ok 6 - push remote-helper (disabled)
 ok 7 - fetch remote-helper (disabled)
 ok 8 - clone remote-helper (disabled)
-# passed all 8 test(s)
-1..8
+ok 9 - clone remote-helper (env var has precedence)
+ok 10 - clone remote-helper (enabled with config)
+ok 11 - fetch remote-helper (enabled)
+ok 12 - push remote-helper (enabled)
+ok 13 - push remote-helper (disabled)
+ok 14 - fetch remote-helper (disabled)
+ok 15 - clone remote-helper (disabled)
+ok 16 - clone remote-helper (enabled)
+ok 17 - fetch remote-helper (enabled)
+ok 18 - push remote-helper (enabled)
+ok 19 - push remote-helper (disabled)
+ok 20 - fetch remote-helper (disabled)
+ok 21 - clone remote-helper (disabled)
+ok 22 - clone remote-helper (enabled)
+ok 23 - fetch remote-helper (enabled)
+ok 24 - push remote-helper (enabled)
+ok 25 - push remote-helper (disabled)
+ok 26 - fetch remote-helper (disabled)
+ok 27 - clone remote-helper (disabled)
+# passed all 27 test(s)
+1..27
 *** t5815-submodule-protos.sh ***
 ok 1 - setup ext wrapper
 ok 2 - setup ssh wrapper
@@ -10558,8 +11512,9 @@
 ok 7 - symleft flag bit is propagated down from tag
 ok 8 - rev-list can show index objects
 ok 9 - --bisect and --first-parent can not be combined
-# passed all 9 test(s)
-1..9
+ok 10 - --header shows a NUL after each commit
+# passed all 10 test(s)
+1..10
 *** t6001-rev-list-graft.sh ***
 ok 1 - setup
 ok 2 - without grafts
@@ -10696,48 +11651,50 @@
 ok 12 - format raw-body
 ok 13 - format colors
 ok 14 - format advanced-colors
-ok 15 - %C(auto) does not enable color by default
-ok 16 - %C(auto) enables colors for color.diff
-ok 17 - %C(auto) enables colors for color.ui
-ok 18 - %C(auto) respects --color
-ok 19 - %C(auto) respects --no-color
-ok 20 # skip %C(auto) respects --color=auto (stdout is tty) (missing TTY)
-ok 21 - %C(auto) respects --color=auto (stdout not tty)
-ok 22 - setup complex body
-ok 23 - format complex-encoding
-ok 24 - format complex-subject
-ok 25 - format complex-subject-trunc
-ok 26 - format complex-subject-mtrunc
-ok 27 - format complex-subject-ltrunc
-ok 28 - prepare expected messages (for test %b)
-ok 29 - format complex-body
-ok 30 - format complex-subject-commitencoding-unset
-ok 31 - format complex-subject-commitencoding-unset-trunc
-ok 32 - format complex-subject-commitencoding-unset-mtrunc
-ok 33 - format complex-subject-commitencoding-unset-ltrunc
-ok 34 - format complex-body-commitencoding-unset
-ok 35 - %x00 shows NUL
-ok 36 - %ad respects --date=
-ok 37 - empty email
-ok 38 - del LF before empty (1)
-ok 39 - del LF before empty (2)
-ok 40 - add LF before non-empty (1)
-ok 41 - add LF before non-empty (2)
-ok 42 - add SP before non-empty (1)
-ok 43 - add SP before non-empty (2)
-ok 44 - --abbrev
-ok 45 - %H is not affected by --abbrev-commit
-ok 46 - %h is not affected by --abbrev-commit
-ok 47 - "%h %gD: %gs" is same as git-reflog
-ok 48 - "%h %gD: %gs" is same as git-reflog (with date)
-ok 49 - "%h %gD: %gs" is same as git-reflog (with --abbrev)
-ok 50 - %gd shortens ref name
-ok 51 - reflog identity
-ok 52 - oneline with empty message
-ok 53 - single-character name is parsed correctly
-ok 54 - unused %G placeholders are passed through
-# passed all 54 test(s)
-1..54
+ok 15 - %C(auto,...) does not enable color by default
+ok 16 - %C(auto,...) enables colors for color.diff
+ok 17 - %C(auto,...) enables colors for color.ui
+ok 18 - %C(auto,...) respects --color
+ok 19 - %C(auto,...) respects --no-color
+ok 20 # skip %C(auto,...) respects --color=auto (stdout is tty) (missing TTY)
+ok 21 - %C(auto,...) respects --color=auto (stdout not tty)
+ok 22 - %C(auto) respects --color
+ok 23 - %C(auto) respects --no-color
+ok 24 - setup complex body
+ok 25 - format complex-encoding
+ok 26 - format complex-subject
+ok 27 - format complex-subject-trunc
+ok 28 - format complex-subject-mtrunc
+ok 29 - format complex-subject-ltrunc
+ok 30 - prepare expected messages (for test %b)
+ok 31 - format complex-body
+ok 32 - format complex-subject-commitencoding-unset
+ok 33 - format complex-subject-commitencoding-unset-trunc
+ok 34 - format complex-subject-commitencoding-unset-mtrunc
+ok 35 - format complex-subject-commitencoding-unset-ltrunc
+ok 36 - format complex-body-commitencoding-unset
+ok 37 - %x00 shows NUL
+ok 38 - %ad respects --date=
+ok 39 - empty email
+ok 40 - del LF before empty (1)
+ok 41 - del LF before empty (2)
+ok 42 - add LF before non-empty (1)
+ok 43 - add LF before non-empty (2)
+ok 44 - add SP before non-empty (1)
+ok 45 - add SP before non-empty (2)
+ok 46 - --abbrev
+ok 47 - %H is not affected by --abbrev-commit
+ok 48 - %h is not affected by --abbrev-commit
+ok 49 - "%h %gD: %gs" is same as git-reflog
+ok 50 - "%h %gD: %gs" is same as git-reflog (with date)
+ok 51 - "%h %gD: %gs" is same as git-reflog (with --abbrev)
+ok 52 - %gd shortens ref name
+ok 53 - reflog identity
+ok 54 - oneline with empty message
+ok 55 - single-character name is parsed correctly
+ok 56 - unused %G placeholders are passed through
+# passed all 56 test(s)
+1..56
 *** t6007-rev-list-cherry-pick-file.sh ***
 ok 1 - setup
 ok 2 - --left-right
@@ -10756,8 +11713,9 @@
 ok 15 - --cherry-mark --left-right --count
 ok 16 - --cherry-pick with independent, but identical branches
 ok 17 - --count --left-right
-# passed all 17 test(s)
-1..17
+ok 18 - --cherry-pick avoids looking at full diffs
+# passed all 18 test(s)
+1..18
 *** t6008-rev-list-submodule.sh ***
 ok 1 - setup
 ok 2 - Ilari's test
@@ -10791,9 +11749,10 @@
 ok 8 - merge-base A B C
 ok 9 - criss-cross merge-base for octopus-step
 ok 10 - using reflog to find the fork point
-ok 11 - merge-base --octopus --all for complex tree
-# passed all 11 test(s)
-1..11
+ok 11 - --fork-point works with empty reflog
+ok 12 - merge-base --octopus --all for complex tree
+# passed all 12 test(s)
+1..12
 *** t6011-rev-list-with-bad-commit.sh ***
 ok 1 - setup
 ok 2 - verify number of revisions
@@ -11062,8 +12021,9 @@
 ok 6 - custom merge backend
 ok 7 - custom merge backend
 ok 8 - up-to-date merge without common ancestor
-# passed all 8 test(s)
-1..8
+ok 9 - custom merge does not lock index
+# passed all 9 test(s)
+1..9
 *** t6027-merge-binary.sh ***
 ok 1 - setup
 ok 2 - resolve
@@ -11145,7 +12105,7 @@
 ok 51 - bisect: --no-checkout - target in breakage
 ok 52 - bisect: --no-checkout - target after breakage
 ok 53 - bisect: demonstrate identification of damage boundary
-ok 54 - bisect log: successfull result
+ok 54 - bisect log: successful result
 ok 55 - bisect log: only skip commits left
 ok 56 - "git bisect bad HEAD" behaves as "git bisect bad"
 ok 57 - bisect starts with only one new
@@ -11249,22 +12209,20 @@
 ok 7 - setup criss-cross + modify/delete resolved differently
 ok 8 - git detects conflict merging criss-cross+modify/delete
 ok 9 - git detects conflict merging criss-cross+modify/delete, reverse direction
-ok 10 - setup differently handled merges of content conflict
-not ok 11 - git detects conflict w/ criss-cross+contrived resolution # TODO known breakage
-ok 12 - setup differently handled merges of directory/file conflict
-ok 13 - merge of D & E1 fails but has appropriate contents
-ok 14 - merge of E1 & D fails but has appropriate contents
-ok 15 - merge of D & E2 fails but has appropriate contents
-ok 16 - merge of E2 & D fails but has appropriate contents
-ok 17 - setup rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify
-ok 18 - handle rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify
-ok 19 - setup criss-cross + rename/rename/add + modify/modify
-not ok 20 - detect rename/rename/add-source for virtual merge-base # TODO known breakage
-ok 21 - setup criss-cross+rename/rename/add-dest + simple modify
-ok 22 - virtual merge base handles rename/rename(1to2)/add-dest
-# still have 2 known breakage(s)
-# passed all remaining 20 test(s)
-1..22
+ok 10 - setup differently handled merges of directory/file conflict
+ok 11 - merge of D & E1 fails but has appropriate contents
+ok 12 - merge of E1 & D fails but has appropriate contents
+ok 13 - merge of D & E2 fails but has appropriate contents
+ok 14 - merge of E2 & D fails but has appropriate contents
+ok 15 - setup rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify
+ok 16 - handle rename/rename(1to2)/modify followed by what looks like rename/rename(2to1)/modify
+ok 17 - setup criss-cross + rename/rename/add + modify/modify
+not ok 18 - detect rename/rename/add-source for virtual merge-base # TODO known breakage
+ok 19 - setup criss-cross+rename/rename/add-dest + simple modify
+ok 20 - virtual merge base handles rename/rename(1to2)/add-dest
+# still have 1 known breakage(s)
+# passed all remaining 19 test(s)
+1..20
 *** t6037-merge-ours-theirs.sh ***
 ok 1 - setup
 ok 2 - plain recursive - should conflict
@@ -11278,16 +12236,17 @@
 ok 1 - setup
 ok 2 - set up fuzz_conflict() helper
 ok 3 - Merge after setting text=auto
-ok 4 - Merge addition of text=auto
-ok 5 - Detect CRLF/LF conflict after setting text=auto
-ok 6 - Detect LF/CRLF conflict from addition of text=auto
-not ok 7 - checkout -m after setting text=auto # TODO known breakage
-not ok 8 - checkout -m addition of text=auto # TODO known breakage
-not ok 9 - cherry-pick patch from after text=auto was added # TODO known breakage
-ok 10 - Test delete/normalize conflict
+ok 4 - Merge addition of text=auto eol=LF
+ok 5 - Merge addition of text=auto eol=CRLF
+ok 6 - Detect CRLF/LF conflict after setting text=auto
+ok 7 - Detect LF/CRLF conflict from addition of text=auto
+not ok 8 - checkout -m after setting text=auto # TODO known breakage
+not ok 9 - checkout -m addition of text=auto # TODO known breakage
+not ok 10 - cherry-pick patch from after text=auto was added # TODO known breakage
+ok 11 - Test delete/normalize conflict
 # still have 3 known breakage(s)
-# passed all remaining 7 test(s)
-1..10
+# passed all remaining 8 test(s)
+1..11
 *** t6039-merge-ignorecase.sh ***
 1..0 # SKIP skipping case insensitive tests - case sensitive file system
 *** t6040-tracking-info.sh ***
@@ -11359,6 +12318,20 @@
 # still have 7 known breakage(s)
 # passed all remaining 19 test(s)
 1..26
+*** t6044-merge-unrelated-index-changes.sh ***
+ok 1 - setup trivial merges
+ok 2 - ff update
+ok 3 - ff update, important file modified
+ok 4 - resolve, trivial
+ok 5 - resolve, non-trivial
+ok 6 - recursive
+ok 7 - octopus, unrelated file touched
+ok 8 - octopus, related file removed
+ok 9 - octopus, related file modified
+ok 10 - ours
+ok 11 - subtree
+# passed all 11 test(s)
+1..11
 *** t6050-replace.sh ***
 ok 1 - set up buggy branch
 ok 2 - replace the author
@@ -11419,12 +12392,31 @@
 ok 11 - --verify start2^1
 ok 12 - --verify start2^0
 ok 13 - final^1^@ = final^1^1 final^1^2
-ok 14 - final^1^! = final^1 ^final^1^1 ^final^1^2
-ok 15 - large graft octopus
-ok 16 - repack for next test
-ok 17 - short SHA-1 works
-# passed all 17 test(s)
-1..17
+ok 14 - symbolic final^1^@ = final^1^1 final^1^2
+ok 15 - final^1^! = final^1 ^final^1^1 ^final^1^2
+ok 16 - symbolic final^1^! = final^1 ^final^1^1 ^final^1^2
+ok 17 - large graft octopus
+ok 18 - repack for next test
+ok 19 - short SHA-1 works
+ok 20 - setup for rev^- tests
+ok 21 - rev-list --count merge^- = merge^..merge
+ok 22 - rev-parse merge^- = merge^..merge
+ok 23 - rev-parse merge^-1 = merge^..merge
+ok 24 - rev-parse merge^-2 = merge^2..merge
+ok 25 - symbolic merge^-1 = merge^1..merge
+ok 26 - rev-parse merge^-0 (invalid parent)
+ok 27 - rev-parse merge^-3 (invalid parent)
+ok 28 - rev-parse merge^-^ (garbage after ^-)
+ok 29 - rev-parse merge^-1x (garbage after ^-1)
+ok 30 - rev-list merge^- = merge^..merge
+ok 31 - rev-list merge^-1 = merge^1..merge
+ok 32 - rev-list merge^-2 = merge^2..merge
+ok 33 - rev-list merge^-0 (invalid parent)
+ok 34 - rev-list merge^-3 (invalid parent)
+ok 35 - rev-list merge^-^ (garbage after ^-)
+ok 36 - rev-list merge^-1x (garbage after ^-1)
+# passed all 36 test(s)
+1..36
 *** t6110-rev-list-sparse.sh ***
 ok 1 - setup
 ok 2 - rev-list --first-parent --boundary
@@ -11606,6 +12598,12 @@
 ok 6 - :/*.t from a subdir dwims to a pathspec
 # passed all 6 test(s)
 1..6
+*** t6134-pathspec-in-submodule.sh ***
+ok 1 - setup a submodule
+ok 2 - error message for path inside submodule
+ok 3 - error message for path inside submodule from within submodule
+# passed all 3 test(s)
+1..3
 *** t6200-fmt-merge-msg.sh ***
 ok 1 - setup
 ok 2 - message for merging local branch
@@ -11790,8 +12788,10 @@
 ok 154 - basic atom: refs/tags/signed-long contents:signature
 ok 155 - basic atom: refs/tags/signed-long contents
 ok 156 - Verify sort with multiple keys
-# passed all 156 test(s)
-1..156
+ok 157 - do not dereference NULL upon %(HEAD) on unborn branch
+ok 158 - basic atom: head contents:trailers
+# passed all 158 test(s)
+1..158
 *** t6301-for-each-ref-errors.sh ***
 ok 1 - setup
 ok 2 - Broken refs are reported correctly
@@ -11810,26 +12810,39 @@
 ok 8 - left alignment is default
 ok 9 - middle alignment
 ok 10 - right alignment
-ok 11 - alignment with format quote
-ok 12 - nested alignment with quote formatting
-ok 13 - check `%(contents:lines=1)`
-ok 14 - check `%(contents:lines=0)`
-ok 15 - check `%(contents:lines=99999)`
-ok 16 - `%(contents:lines=-1)` should fail
-ok 17 - setup for version sort
-ok 18 - version sort
-ok 19 - version sort (shortened)
-ok 20 - reverse version sort
-# passed all 20 test(s)
-1..20
+ok 11 - align:middle,42
+ok 12 - align:42,middle
+ok 13 - align:position=middle,42
+ok 14 - align:42,position=middle
+ok 15 - align:middle,width=42
+ok 16 - align:width=42,middle
+ok 17 - align:position=middle,width=42
+ok 18 - align:width=42,position=middle
+ok 19 - align:32,width=42,middle
+ok 20 - align:width=30,42,middle
+ok 21 - align:width=42,position=right,middle
+ok 22 - align:42,right,position=middle
+ok 23 - alignment with format quote
+ok 24 - nested alignment with quote formatting
+ok 25 - check `%(contents:lines=1)`
+ok 26 - check `%(contents:lines=0)`
+ok 27 - check `%(contents:lines=99999)`
+ok 28 - `%(contents:lines=-1)` should fail
+ok 29 - setup for version sort
+ok 30 - version sort
+ok 31 - version sort (shortened)
+ok 32 - reverse version sort
+# passed all 32 test(s)
+1..32
 *** t6500-gc.sh ***
 ok 1 - gc empty repository
 ok 2 - gc does not leave behind pid file
 ok 3 - gc --gobbledegook
 ok 4 - gc -h with invalid configuration
 ok 5 - gc is not aborted due to a stale symref
-# passed all 5 test(s)
-1..5
+ok 6 - auto gc with too many loose objects does not attempt to create bitmaps
+# passed all 6 test(s)
+1..6
 *** t6501-freshen-objects.sh ***
 ok 1 - make repo completely empty (loose)
 ok 2 - disable reflogs (loose)
@@ -11907,8 +12920,9 @@
 ok 44 - mv --dry-run does not touch the submodule or .gitmodules
 ok 45 - checking out a commit before submodule moved needs manual updates
 ok 46 - mv -k does not accidentally destroy submodules
-# passed all 46 test(s)
-1..46
+ok 47 - moving a submodule in nested directories
+# passed all 47 test(s)
+1..47
 *** t7003-filter-branch.sh ***
 ok 1 - setup
 ok 2 - rewrite identically
@@ -11954,154 +12968,169 @@
 *** t7004-tag.sh ***
 ok 1 - listing all tags in an empty tree should succeed
 ok 2 - listing all tags in an empty tree should output nothing
-ok 3 - looking for a tag in an empty tree should fail
-ok 4 - creating a tag in an empty tree should fail
-ok 5 - creating a tag for HEAD in an empty tree should fail
-ok 6 - creating a tag for an unknown revision should fail
-ok 7 - creating a tag using default HEAD should succeed
-ok 8 - creating a tag with --create-reflog should create reflog
-ok 9 - --create-reflog does not create reflog on failure
-ok 10 - listing all tags if one exists should succeed
-ok 11 - listing all tags if one exists should output that tag
-ok 12 - listing a tag using a matching pattern should succeed
-ok 13 - listing a tag using a matching pattern should output that tag
-ok 14 - listing tags using a non-matching pattern should suceed
-ok 15 - listing tags using a non-matching pattern should output nothing
-ok 16 - trying to create a tag with the name of one existing should fail
-ok 17 - trying to create a tag with a non-valid name should fail
-ok 18 - creating a tag using HEAD directly should succeed
-ok 19 - --force can create a tag with the name of one existing
-ok 20 - --force is moot with a non-existing tag name
-Deleted tag 'newtag' (was 86e17e4)
-Deleted tag 'forcetag' (was 86e17e4)
-ok 21 - trying to delete an unknown tag should fail
-ok 22 - trying to delete tags without params should succeed and do nothing
-ok 23 - deleting two existing tags in one command should succeed
-ok 24 - creating a tag with the name of another deleted one should succeed
-ok 25 - trying to delete two tags, existing and not, should fail in the 2nd
-ok 26 - trying to delete an already deleted tag should fail
-ok 27 - listing all tags should print them ordered
-ok 28 - listing tags with substring as pattern must print those matching
-ok 29 - listing tags with a suffix as pattern must print those matching
-ok 30 - listing tags with a prefix as pattern must print those matching
-ok 31 - listing tags using a name as pattern must print that one matching
-ok 32 - listing tags using a name as pattern must print that one matching
-ok 33 - listing tags with ? in the pattern should print those matching
-ok 34 - listing tags using v.* should print nothing because none have v.
-ok 35 - listing tags using v* should print only those having v
-ok 36 - tag -l can accept multiple patterns
-ok 37 - listing tags in column
-ok 38 - listing tags in column with column.*
-ok 39 - listing tag with -n --column should fail
-ok 40 - listing tags -n in column with column.ui ignored
-ok 41 - a non-annotated tag created without parameters should point to HEAD
-ok 42 - trying to verify an unknown tag should fail
-ok 43 - trying to verify a non-annotated and non-signed tag should fail
-ok 44 - trying to verify many non-annotated or unknown tags, should fail
-ok 45 - creating an annotated tag with -m message should succeed
-ok 46 - creating an annotated tag with -F messagefile should succeed
-ok 47 - creating an annotated tag with -F - should succeed
-ok 48 - trying to create a tag with a non-existing -F file should fail
-ok 49 - trying to create tags giving both -m or -F options should fail
-ok 50 - creating a tag with an empty -m message should succeed
-ok 51 - creating a tag with an empty -F messagefile should succeed
-ok 52 - extra blanks in the message for an annotated tag should be removed
-ok 53 - creating a tag with blank -m message with spaces should succeed
-ok 54 - creating a tag with blank -F messagefile with spaces should succeed
-ok 55 - creating a tag with -F file of spaces and no newline should succeed
-ok 56 - creating a tag using a -F messagefile with #comments should succeed
-ok 57 - creating a tag with a #comment in the -m message should succeed
-ok 58 - creating a tag with #comments in the -F messagefile should succeed
-ok 59 - creating a tag with a file of #comment and no newline should succeed
-ok 60 - listing the one-line message of a non-signed tag should succeed
-ok 61 - listing the zero-lines message of a non-signed tag should succeed
-ok 62 - listing many message lines of a non-signed tag should succeed
-ok 63 - annotations for blobs are empty
-ok 64 - trying to verify an annotated non-signed tag should fail
-ok 65 - trying to verify a file-annotated non-signed tag should fail
-ok 66 - trying to verify two annotated non-signed tags should fail
-ok 67 - creating a signed tag with -m message should succeed
-ok 68 - sign with a given key id
-ok 69 - sign with an unknown id (1)
-ok 70 - sign with an unknown id (2)
-ok 71 - -u implies signed tag
-ok 72 - creating a signed tag with -F messagefile should succeed
-ok 73 - creating a signed tag with -F - should succeed
-ok 74 - -s implies annotated tag
-ok 75 - trying to create a signed tag with non-existing -F file should fail
-ok 76 - verifying a signed tag should succeed
-ok 77 - verifying two signed tags in one command should succeed
-ok 78 - verifying many signed and non-signed tags should fail
-ok 79 - verifying a forged tag should fail
-ok 80 - creating a signed tag with an empty -m message should succeed
-ok 81 - creating a signed tag with an empty -F messagefile should succeed
-ok 82 - extra blanks in the message for a signed tag should be removed
-ok 83 - creating a signed tag with a blank -m message should succeed
-ok 84 - creating a signed tag with blank -F file with spaces should succeed
-ok 85 - creating a signed tag with spaces and no newline should succeed
-ok 86 - creating a signed tag with a -F file with #comments should succeed
-ok 87 - creating a signed tag with #commented -m message should succeed
-ok 88 - creating a signed tag with #commented -F messagefile should succeed
-ok 89 - creating a signed tag with a #comment and no newline should succeed
-ok 90 - listing the one-line message of a signed tag should succeed
-ok 91 - listing the zero-lines message of a signed tag should succeed
-ok 92 - listing many message lines of a signed tag should succeed
-ok 93 - creating a signed tag pointing to a tree should succeed
-ok 94 - creating a signed tag pointing to a blob should succeed
-ok 95 - creating a signed tag pointing to another tag should succeed
-ok 96 - creating a signed tag with rfc1991
-ok 97 - reediting a signed tag body omits signature
-ok 98 - verifying rfc1991 signature
-ok 99 - list tag with rfc1991 signature
-ok 100 - verifying rfc1991 signature without --rfc1991
-ok 101 - list tag with rfc1991 signature without --rfc1991
-ok 102 - reediting a signed tag body omits signature
-ok 103 - git tag -s fails if gpg is misconfigured
-ok 104 - verify signed tag fails when public key is not present
-ok 105 - git tag -a fails if tag annotation is empty
-ok 106 - message in editor has initial comment
-ok 107 - message in editor has initial comment: first line
-ok 108 - message in editor has initial comment: remainder
-ok 109 - overwriting an annoted tag should use its previous body
-ok 110 - filename for the message is relative to cwd
-ok 111 - filename for the message is relative to cwd
-ok 112 - creating second commit and tag
-ok 113 - creating third commit without tag
-ok 114 - checking that first commit is in all tags (hash)
-ok 115 - checking that first commit is in all tags (tag)
-ok 116 - checking that first commit is in all tags (relative)
-ok 117 - checking that second commit only has one tag
-ok 118 - checking that third commit has no tags
-ok 119 - creating simple branch
-ok 120 - checking that branch head only has one tag
-ok 121 - merging original branch into this branch
-ok 122 - checking that original branch head has one tag now
-ok 123 - checking that initial commit is in all tags
-ok 124 - mixing incompatibles modes and options is forbidden
-ok 125 - --points-at cannot be used in non-list mode
-ok 126 - --points-at finds lightweight tags
-ok 127 - --points-at finds annotated tags of commits
-ok 128 - --points-at finds annotated tags of tags
-ok 129 - multiple --points-at are OR-ed together
-ok 130 - lexical sort
-ok 131 - version sort
-ok 132 - reverse version sort
-ok 133 - reverse lexical sort
-ok 134 - configured lexical sort
-ok 135 - option override configured sort
-ok 136 - invalid sort parameter on command line
-ok 137 - invalid sort parameter in configuratoin
-ok 138 - version sort with prerelease reordering
-ok 139 - reverse version sort with prerelease reordering
-ok 140 - --contains works in a deep repo
-ok 141 - --format should list tags as per format given
-ok 142 - setup --merged test tags
-ok 143 - --merged cannot be used in non-list mode
-ok 144 - --merged shows merged tags
-ok 145 - --no-merged show unmerged tags
-ok 146 - ambiguous branch/tags not marked
-# passed all 146 test(s)
-1..146
+ok 3 - sort tags, ignore case
+ok 4 - looking for a tag in an empty tree should fail
+ok 5 - creating a tag in an empty tree should fail
+ok 6 - creating a tag for HEAD in an empty tree should fail
+ok 7 - creating a tag for an unknown revision should fail
+ok 8 - creating a tag using default HEAD should succeed
+ok 9 - creating a tag with --create-reflog should create reflog
+ok 10 - --create-reflog does not create reflog on failure
+ok 11 - option core.logAllRefUpdates=always creates reflog
+ok 12 - listing all tags if one exists should succeed
+ok 13 - listing all tags if one exists should output that tag
+ok 14 - listing a tag using a matching pattern should succeed
+ok 15 - listing a tag with --ignore-case
+ok 16 - listing a tag using a matching pattern should output that tag
+ok 17 - listing tags using a non-matching pattern should suceed
+ok 18 - listing tags using a non-matching pattern should output nothing
+ok 19 - trying to create a tag with the name of one existing should fail
+ok 20 - trying to create a tag with a non-valid name should fail
+ok 21 - creating a tag using HEAD directly should succeed
+ok 22 - --force can create a tag with the name of one existing
+ok 23 - --force is moot with a non-existing tag name
+ok 24 - trying to delete an unknown tag should fail
+ok 25 - trying to delete tags without params should succeed and do nothing
+ok 26 - deleting two existing tags in one command should succeed
+ok 27 - creating a tag with the name of another deleted one should succeed
+ok 28 - trying to delete two tags, existing and not, should fail in the 2nd
+ok 29 - trying to delete an already deleted tag should fail
+ok 30 - listing all tags should print them ordered
+ok 31 - listing tags with substring as pattern must print those matching
+ok 32 - listing tags with a suffix as pattern must print those matching
+ok 33 - listing tags with a prefix as pattern must print those matching
+ok 34 - listing tags using a name as pattern must print that one matching
+ok 35 - listing tags using a name as pattern must print that one matching
+ok 36 - listing tags with ? in the pattern should print those matching
+ok 37 - listing tags using v.* should print nothing because none have v.
+ok 38 - listing tags using v* should print only those having v
+ok 39 - tag -l can accept multiple patterns
+ok 40 - listing tags in column
+ok 41 - listing tags in column with column.*
+ok 42 - listing tag with -n --column should fail
+ok 43 - listing tags -n in column with column.ui ignored
+ok 44 - a non-annotated tag created without parameters should point to HEAD
+ok 45 - trying to verify an unknown tag should fail
+ok 46 - trying to verify a non-annotated and non-signed tag should fail
+ok 47 - trying to verify many non-annotated or unknown tags, should fail
+ok 48 - creating an annotated tag with -m message should succeed
+ok 49 - creating an annotated tag with -F messagefile should succeed
+ok 50 - creating an annotated tag with -F - should succeed
+ok 51 - trying to create a tag with a non-existing -F file should fail
+ok 52 - trying to create tags giving both -m or -F options should fail
+ok 53 - creating a tag with an empty -m message should succeed
+ok 54 - creating a tag with an empty -F messagefile should succeed
+ok 55 - extra blanks in the message for an annotated tag should be removed
+ok 56 - creating a tag with blank -m message with spaces should succeed
+ok 57 - creating a tag with blank -F messagefile with spaces should succeed
+ok 58 - creating a tag with -F file of spaces and no newline should succeed
+ok 59 - creating a tag using a -F messagefile with #comments should succeed
+ok 60 - creating a tag with a #comment in the -m message should succeed
+ok 61 - creating a tag with #comments in the -F messagefile should succeed
+ok 62 - creating a tag with a file of #comment and no newline should succeed
+ok 63 - listing the one-line message of a non-signed tag should succeed
+ok 64 - listing the zero-lines message of a non-signed tag should succeed
+ok 65 - listing many message lines of a non-signed tag should succeed
+ok 66 - annotations for blobs are empty
+ok 67 - trying to verify an annotated non-signed tag should fail
+ok 68 - trying to verify a file-annotated non-signed tag should fail
+ok 69 - trying to verify two annotated non-signed tags should fail
+ok 70 - creating a signed tag with -m message should succeed
+ok 71 - sign with a given key id
+ok 72 - sign with an unknown id (1)
+ok 73 - sign with an unknown id (2)
+ok 74 - -u implies signed tag
+ok 75 - creating a signed tag with -F messagefile should succeed
+ok 76 - creating a signed tag with -F - should succeed
+ok 77 - -s implies annotated tag
+ok 78 - git tag -s implied if configured with tag.forcesignannotated
+ok 79 - lightweight with no message when configured with tag.forcesignannotated
+ok 80 - git tag -a disable configured tag.forcesignannotated
+ok 81 - git tag --sign enable GPG sign
+ok 82 - trying to create a signed tag with non-existing -F file should fail
+ok 83 - verifying a signed tag should succeed
+ok 84 - verifying two signed tags in one command should succeed
+ok 85 - verifying many signed and non-signed tags should fail
+ok 86 - verifying a forged tag should fail
+ok 87 - verifying a proper tag with --format pass and format accordingly
+ok 88 - verifying a forged tag with --format fail and format accordingly
+ok 89 - creating a signed tag with an empty -m message should succeed
+ok 90 - creating a signed tag with an empty -F messagefile should succeed
+ok 91 - extra blanks in the message for a signed tag should be removed
+ok 92 - creating a signed tag with a blank -m message should succeed
+ok 93 - creating a signed tag with blank -F file with spaces should succeed
+ok 94 - creating a signed tag with spaces and no newline should succeed
+ok 95 - creating a signed tag with a -F file with #comments should succeed
+ok 96 - creating a signed tag with #commented -m message should succeed
+ok 97 - creating a signed tag with #commented -F messagefile should succeed
+ok 98 - creating a signed tag with a #comment and no newline should succeed
+ok 99 - listing the one-line message of a signed tag should succeed
+ok 100 - listing the zero-lines message of a signed tag should succeed
+ok 101 - listing many message lines of a signed tag should succeed
+ok 102 - creating a signed tag pointing to a tree should succeed
+ok 103 - creating a signed tag pointing to a blob should succeed
+ok 104 - creating a signed tag pointing to another tag should succeed
+ok 105 - creating a signed tag with rfc1991
+ok 106 - reediting a signed tag body omits signature
+ok 107 - verifying rfc1991 signature
+ok 108 - list tag with rfc1991 signature
+ok 109 - verifying rfc1991 signature without --rfc1991
+ok 110 - list tag with rfc1991 signature without --rfc1991
+ok 111 - reediting a signed tag body omits signature
+ok 112 - git tag -s fails if gpg is misconfigured (bad key)
+ok 113 - git tag -s fails if gpg is misconfigured (bad signature format)
+ok 114 - verify signed tag fails when public key is not present
+ok 115 - git tag -a fails if tag annotation is empty
+ok 116 - message in editor has initial comment
+ok 117 - message in editor has initial comment: first line
+ok 118 - message in editor has initial comment: remainder
+ok 119 - overwriting an annoted tag should use its previous body
+ok 120 - filename for the message is relative to cwd
+ok 121 - filename for the message is relative to cwd
+ok 122 - creating second commit and tag
+ok 123 - creating third commit without tag
+ok 124 - checking that first commit is in all tags (hash)
+ok 125 - checking that first commit is in all tags (tag)
+ok 126 - checking that first commit is in all tags (relative)
+ok 127 - checking that second commit only has one tag
+ok 128 - checking that third commit has no tags
+ok 129 - creating simple branch
+ok 130 - checking that branch head only has one tag
+ok 131 - merging original branch into this branch
+ok 132 - checking that original branch head has one tag now
+ok 133 - checking that initial commit is in all tags
+ok 134 - mixing incompatibles modes and options is forbidden
+ok 135 - --points-at cannot be used in non-list mode
+ok 136 - --points-at finds lightweight tags
+ok 137 - --points-at finds annotated tags of commits
+ok 138 - --points-at finds annotated tags of tags
+ok 139 - multiple --points-at are OR-ed together
+ok 140 - lexical sort
+ok 141 - version sort
+ok 142 - reverse version sort
+ok 143 - reverse lexical sort
+ok 144 - configured lexical sort
+ok 145 - option override configured sort
+ok 146 - invalid sort parameter on command line
+ok 147 - invalid sort parameter in configuratoin
+ok 148 - version sort with prerelease reordering
+ok 149 - reverse version sort with prerelease reordering
+ok 150 - version sort with prerelease reordering and common leading character
+ok 151 - version sort with prerelease reordering, multiple suffixes and common leading character
+ok 152 - version sort with prerelease reordering, multiple suffixes match the same tag
+ok 153 - version sort with prerelease reordering, multiple suffixes match starting at the same position
+ok 154 - version sort with general suffix reordering
+ok 155 - versionsort.suffix overrides versionsort.prereleaseSuffix
+ok 156 - version sort with very long prerelease suffix
+ok 157 - --contains works in a deep repo
+ok 158 - --format should list tags as per format given
+ok 159 - setup --merged test tags
+ok 160 - --merged cannot be used in non-list mode
+ok 161 - --merged shows merged tags
+ok 162 - --no-merged show unmerged tags
+ok 163 - ambiguous branch/tags not marked
+# passed all 163 test(s)
+1..163
 *** t7005-editor.sh ***
 ok 1 - determine default editor
 ok 2 - setup
@@ -12127,79 +13156,80 @@
 ok 3 # skip some commands use a pager (missing TTY)
 ok 4 # skip pager runs from subdir (missing TTY)
 ok 5 # skip LESS and LV envvars are set for pagination (missing TTY)
-ok 6 # skip some commands do not use a pager (missing TTY)
-ok 7 - no pager when stdout is a pipe
-ok 8 - no pager when stdout is a regular file
-ok 9 # skip git --paginate rev-list uses a pager (missing TTY)
-ok 10 - no pager even with --paginate when stdout is a pipe
-ok 11 # skip no pager with --no-pager (missing TTY)
-ok 12 # skip configuration can disable pager (missing TTY)
-ok 13 # skip git config uses a pager if configured to (missing TTY)
-ok 14 # skip configuration can enable pager (from subdir) (missing TTY)
-ok 15 - tests can detect color
-ok 16 - no color when stdout is a regular file
-ok 17 # skip color when writing to a pager (missing TTY)
-ok 18 # skip colors are suppressed by color.pager (missing TTY)
-ok 19 - color when writing to a file intended for a pager
-ok 20 # skip colors are sent to pager for external commands (missing TTY)
-ok 21 - setup: some aliases
-ok 22 # skip git log - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
-ok 23 # skip git log - PAGER overrides default pager (missing TTY)
-ok 24 # skip git log - repository-local core.pager setting overrides PAGER (missing TTY)
-ok 25 # skip git log - core.pager overrides PAGER from subdirectory (missing TTY)
-ok 26 # skip git log - GIT_PAGER overrides core.pager (missing TTY)
-ok 27 # skip git -p log - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
-ok 28 # skip git -p log - PAGER overrides default pager (missing TTY)
-ok 29 # skip git -p log - repository-local core.pager setting overrides PAGER (missing TTY)
-ok 30 # skip git -p log - core.pager overrides PAGER from subdirectory (missing TTY)
-ok 31 # skip git -p log - GIT_PAGER overrides core.pager (missing TTY)
-ok 32 # skip git aliasedlog - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
-ok 33 # skip git aliasedlog - PAGER overrides default pager (missing TTY)
-ok 34 # skip git aliasedlog - repository-local core.pager setting overrides PAGER (missing TTY)
-ok 35 # skip git aliasedlog - core.pager overrides PAGER from subdirectory (missing TTY)
-ok 36 # skip git aliasedlog - GIT_PAGER overrides core.pager (missing TTY)
-ok 37 # skip git -p aliasedlog - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
-ok 38 # skip git -p aliasedlog - PAGER overrides default pager (missing TTY)
-ok 39 # skip git -p aliasedlog - repository-local core.pager setting overrides PAGER (missing TTY)
-ok 40 # skip git -p aliasedlog - core.pager overrides PAGER from subdirectory (missing TTY)
-ok 41 # skip git -p aliasedlog - GIT_PAGER overrides core.pager (missing TTY)
-ok 42 # skip git -p true - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
-ok 43 # skip git -p true - PAGER overrides default pager (missing TTY)
-ok 44 # skip git -p true - repository-local core.pager setting overrides PAGER (missing TTY)
-ok 45 # skip git -p true - core.pager overrides PAGER from subdirectory (missing TTY)
-ok 46 # skip git -p true - GIT_PAGER overrides core.pager (missing TTY)
-ok 47 # skip git -p request-pull - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
-ok 48 # skip git -p request-pull - PAGER overrides default pager (missing TTY)
-ok 49 # skip git -p request-pull - repository-local core.pager setting overrides PAGER (missing TTY)
-ok 50 # skip git -p request-pull - core.pager overrides PAGER from subdirectory (missing TTY)
-ok 51 # skip git -p request-pull - GIT_PAGER overrides core.pager (missing TTY)
-ok 52 # skip git -p - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
-ok 53 # skip git -p - PAGER overrides default pager (missing TTY)
-ok 54 # skip git -p - repository-local core.pager setting is not used (missing TTY)
-ok 55 # skip git -p - core.pager is not used from subdirectory (missing TTY)
-ok 56 # skip git -p - GIT_PAGER overrides core.pager (missing TTY)
-ok 57 # skip no pager for 'git -p nonsense' (missing TTY)
-ok 58 # skip git shortlog - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
-ok 59 # skip git shortlog - PAGER overrides default pager (missing TTY)
-ok 60 # skip git shortlog - repository-local core.pager setting overrides PAGER (missing TTY)
-ok 61 # skip git shortlog - core.pager overrides PAGER from subdirectory (missing TTY)
-ok 62 # skip git shortlog - GIT_PAGER overrides core.pager (missing TTY)
-ok 63 - setup: configure shortlog not to paginate
-ok 64 # skip no pager for 'git shortlog' (missing TTY)
-ok 65 # skip git shortlog - core.pager is not used from subdirectory (missing TTY)
-ok 66 # skip git -p shortlog - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
-ok 67 # skip git -p shortlog - core.pager overrides PAGER from subdirectory (missing TTY)
-ok 68 # skip git -p apply </dev/null - core.pager overrides PAGER from subdirectory (missing TTY)
-ok 69 # skip command-specific pager (missing TTY)
-ok 70 # skip command-specific pager overrides core.pager (missing TTY)
-ok 71 # skip command-specific pager overridden by environment (missing TTY)
-ok 72 - setup external command
-ok 73 # skip command-specific pager works for external commands (missing TTY)
-ok 74 # skip sub-commands of externals use their own pager (missing TTY)
-ok 75 # skip external command pagers override sub-commands (missing TTY)
-ok 76 - command with underscores does not complain
-# passed all 76 test(s)
-1..76
+ok 6 # skip LESS and LV envvars set by git-sh-setup (missing TTY of !MINGW,TTY)
+ok 7 # skip some commands do not use a pager (missing TTY)
+ok 8 - no pager when stdout is a pipe
+ok 9 - no pager when stdout is a regular file
+ok 10 # skip git --paginate rev-list uses a pager (missing TTY)
+ok 11 - no pager even with --paginate when stdout is a pipe
+ok 12 # skip no pager with --no-pager (missing TTY)
+ok 13 # skip configuration can disable pager (missing TTY)
+ok 14 # skip git config uses a pager if configured to (missing TTY)
+ok 15 # skip configuration can enable pager (from subdir) (missing TTY)
+ok 16 - tests can detect color
+ok 17 - no color when stdout is a regular file
+ok 18 # skip color when writing to a pager (missing TTY)
+ok 19 # skip colors are suppressed by color.pager (missing TTY)
+ok 20 - color when writing to a file intended for a pager
+ok 21 # skip colors are sent to pager for external commands (missing TTY)
+ok 22 - setup: some aliases
+ok 23 # skip git log - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
+ok 24 # skip git log - PAGER overrides default pager (missing TTY)
+ok 25 # skip git log - repository-local core.pager setting overrides PAGER (missing TTY)
+ok 26 # skip git log - core.pager overrides PAGER from subdirectory (missing TTY)
+ok 27 # skip git log - GIT_PAGER overrides core.pager (missing TTY)
+ok 28 # skip git -p log - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
+ok 29 # skip git -p log - PAGER overrides default pager (missing TTY)
+ok 30 # skip git -p log - repository-local core.pager setting overrides PAGER (missing TTY)
+ok 31 # skip git -p log - core.pager overrides PAGER from subdirectory (missing TTY)
+ok 32 # skip git -p log - GIT_PAGER overrides core.pager (missing TTY)
+ok 33 # skip git aliasedlog - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
+ok 34 # skip git aliasedlog - PAGER overrides default pager (missing TTY)
+ok 35 # skip git aliasedlog - repository-local core.pager setting overrides PAGER (missing TTY)
+ok 36 # skip git aliasedlog - core.pager overrides PAGER from subdirectory (missing TTY)
+ok 37 # skip git aliasedlog - GIT_PAGER overrides core.pager (missing TTY)
+ok 38 # skip git -p aliasedlog - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
+ok 39 # skip git -p aliasedlog - PAGER overrides default pager (missing TTY)
+ok 40 # skip git -p aliasedlog - repository-local core.pager setting overrides PAGER (missing TTY)
+ok 41 # skip git -p aliasedlog - core.pager overrides PAGER from subdirectory (missing TTY)
+ok 42 # skip git -p aliasedlog - GIT_PAGER overrides core.pager (missing TTY)
+ok 43 # skip git -p true - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
+ok 44 # skip git -p true - PAGER overrides default pager (missing TTY)
+ok 45 # skip git -p true - repository-local core.pager setting overrides PAGER (missing TTY)
+ok 46 # skip git -p true - core.pager overrides PAGER from subdirectory (missing TTY)
+ok 47 # skip git -p true - GIT_PAGER overrides core.pager (missing TTY)
+ok 48 # skip git -p request-pull - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
+ok 49 # skip git -p request-pull - PAGER overrides default pager (missing TTY)
+ok 50 # skip git -p request-pull - repository-local core.pager setting overrides PAGER (missing TTY)
+ok 51 # skip git -p request-pull - core.pager overrides PAGER from subdirectory (missing TTY)
+ok 52 # skip git -p request-pull - GIT_PAGER overrides core.pager (missing TTY)
+ok 53 # skip git -p - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
+ok 54 # skip git -p - PAGER overrides default pager (missing TTY)
+ok 55 # skip git -p - repository-local core.pager setting is not used (missing TTY)
+ok 56 # skip git -p - core.pager is not used from subdirectory (missing TTY)
+ok 57 # skip git -p - GIT_PAGER overrides core.pager (missing TTY)
+ok 58 # skip no pager for 'git -p nonsense' (missing TTY)
+ok 59 # skip git shortlog - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
+ok 60 # skip git shortlog - PAGER overrides default pager (missing TTY)
+ok 61 # skip git shortlog - repository-local core.pager setting overrides PAGER (missing TTY)
+ok 62 # skip git shortlog - core.pager overrides PAGER from subdirectory (missing TTY)
+ok 63 # skip git shortlog - GIT_PAGER overrides core.pager (missing TTY)
+ok 64 - setup: configure shortlog not to paginate
+ok 65 # skip no pager for 'git shortlog' (missing TTY)
+ok 66 # skip git shortlog - core.pager is not used from subdirectory (missing TTY)
+ok 67 # skip git -p shortlog - default pager is used by default (missing TTY of SIMPLEPAGER,TTY)
+ok 68 # skip git -p shortlog - core.pager overrides PAGER from subdirectory (missing TTY)
+ok 69 # skip git -p apply </dev/null - core.pager overrides PAGER from subdirectory (missing TTY)
+ok 70 # skip command-specific pager (missing TTY)
+ok 71 # skip command-specific pager overrides core.pager (missing TTY)
+ok 72 # skip command-specific pager overridden by environment (missing TTY)
+ok 73 - setup external command
+ok 74 # skip command-specific pager works for external commands (missing TTY)
+ok 75 # skip sub-commands of externals use their own pager (missing TTY)
+ok 76 # skip external command pagers override sub-commands (missing TTY)
+ok 77 - command with underscores does not complain
+# passed all 77 test(s)
+1..77
 *** t7007-show.sh ***
 ok 1 - setup
 ok 2 - showing a tag that point at a missing object
@@ -12315,8 +13345,11 @@
 ok 2 - verify and show signatures
 ok 3 - detect fudged signature
 ok 4 - verify signatures with --raw
-# passed all 4 test(s)
-1..4
+ok 5 - verify multiple tags
+ok 6 - verifying tag with --format
+ok 7 - verifying a forged tag with --format fail and format accordingly
+# passed all 7 test(s)
+1..7
 *** t7060-wtstatus.sh ***
 ok 1 - setup
 ok 2 - A/A conflict
@@ -12333,8 +13366,10 @@
 ok 13 - status when conflicts with add and rm advice (both deleted)
 ok 14 - status when conflicts with only rm advice (both deleted)
 ok 15 - status --branch with detached HEAD
-# passed all 15 test(s)
-1..15
+ok 16 - status --porcelain=v1 --branch with detached HEAD
+ok 17 - status --porcelain=bogus
+# passed all 17 test(s)
+1..17
 *** t7061-wtstatus-ignore.sh ***
 ok 1 - status untracked directory with --ignored
 ok 2 - same with gitignore starting with BOM
@@ -12364,40 +13399,78 @@
 # passed all 1 test(s)
 1..1
 *** t7063-status-untracked-cache.sh ***
-ok 1 - setup
-ok 2 - untracked cache is empty
-ok 3 - status first time (empty cache)
-ok 4 - untracked cache after first status
-ok 5 - status second time (fully populated cache)
-ok 6 - untracked cache after second status
-ok 7 - modify in root directory, one dir invalidation
-ok 8 - verify untracked cache dump
-ok 9 - new .gitignore invalidates recursively
-ok 10 - verify untracked cache dump
-ok 11 - new info/exclude invalidates everything
-ok 12 - verify untracked cache dump
-ok 13 - move two from tracked to untracked
-ok 14 - status after the move
-ok 15 - verify untracked cache dump
-ok 16 - move two from untracked to tracked
-ok 17 - status after the move
-ok 18 - verify untracked cache dump
-ok 19 - set up for sparse checkout testing
-ok 20 - status after commit
-ok 21 - untracked cache correct after commit
-ok 22 - set up sparse checkout
-ok 23 - create/modify files, some of which are gitignored
-ok 24 - test sparse status with untracked cache
-ok 25 - untracked cache correct after status
-ok 26 - test sparse status again with untracked cache
-ok 27 - set up for test of subdir and sparse checkouts
-ok 28 - test sparse status with untracked cache and subdir
-ok 29 - verify untracked cache dump (sparse/subdirs)
-ok 30 - test sparse status again with untracked cache and subdir
-ok 31 - move entry in subdir from untracked to cached
-ok 32 - move entry in subdir from cached to untracked
-# passed all 32 test(s)
-1..32
+ok 1 - core.untrackedCache is unset
+ok 2 - setup
+ok 3 - untracked cache is empty
+ok 4 - status first time (empty cache)
+ok 5 - untracked cache after first status
+ok 6 - status second time (fully populated cache)
+ok 7 - untracked cache after second status
+ok 8 - modify in root directory, one dir invalidation
+ok 9 - verify untracked cache dump
+ok 10 - new .gitignore invalidates recursively
+ok 11 - verify untracked cache dump
+ok 12 - new info/exclude invalidates everything
+ok 13 - verify untracked cache dump
+ok 14 - move two from tracked to untracked
+ok 15 - status after the move
+ok 16 - verify untracked cache dump
+ok 17 - move two from untracked to tracked
+ok 18 - status after the move
+ok 19 - verify untracked cache dump
+ok 20 - set up for sparse checkout testing
+ok 21 - status after commit
+ok 22 - untracked cache correct after commit
+ok 23 - set up sparse checkout
+ok 24 - create/modify files, some of which are gitignored
+ok 25 - test sparse status with untracked cache
+ok 26 - untracked cache correct after status
+ok 27 - test sparse status again with untracked cache
+ok 28 - set up for test of subdir and sparse checkouts
+ok 29 - test sparse status with untracked cache and subdir
+ok 30 - verify untracked cache dump (sparse/subdirs)
+ok 31 - test sparse status again with untracked cache and subdir
+ok 32 - move entry in subdir from untracked to cached
+ok 33 - move entry in subdir from cached to untracked
+ok 34 - --no-untracked-cache removes the cache
+ok 35 - git status does not change anything
+ok 36 - setting core.untrackedCache to true and using git status creates the cache
+ok 37 - using --no-untracked-cache does not fail when core.untrackedCache is true
+ok 38 - setting core.untrackedCache to false and using git status removes the cache
+ok 39 - using --untracked-cache does not fail when core.untrackedCache is false
+ok 40 - setting core.untrackedCache to keep
+ok 41 - test ident field is working
+# passed all 41 test(s)
+1..41
+*** t7064-wtstatus-pv2.sh ***
+ok 1 - setup
+ok 2 - before initial commit, nothing added, only untracked
+ok 3 - before initial commit, things added
+ok 4 - before initial commit, things added (-z)
+ok 5 - make first commit, comfirm HEAD oid and branch
+ok 6 - after first commit, create unstaged changes
+ok 7 - after first commit but omit untracked files and branch
+ok 8 - after first commit, stage existing changes
+ok 9 - rename causes 2 path lines
+ok 10 - rename causes 2 path lines (-z)
+ok 11 - make second commit, confirm clean and new HEAD oid
+ok 12 - confirm ignored files are not printed
+ok 13 - ignored files are printed with --ignored
+ok 14 - create and commit permanent ignore file
+ok 15 - verify --intent-to-add output
+ok 16 - verify AA (add-add) conflict
+ok 17 - verify UU (edit-edit) conflict
+ok 18 - verify upstream fields in branch header
+ok 19 - create and add submodule, submodule appears clean (A. S...)
+ok 20 - untracked changes in added submodule (AM S..U)
+ok 21 - staged changes in added submodule (AM S.M.)
+ok 22 - staged and unstaged changes in added (AM S.M.)
+ok 23 - staged and untracked changes in added submodule (AM S.MU)
+ok 24 - commit within the submodule appears as new commit in super (AM SC..)
+ok 25 - stage submodule in super and commit
+ok 26 - make unstaged changes in existing submodule (.M S.M.)
+# passed all 26 test(s)
+1..26
 *** t7101-reset-empty-subdirs.sh ***
 ok 1 - creating initial files
 ok 2 - creating second files
@@ -12715,91 +13788,98 @@
 # passed all 22 test(s)
 1..22
 *** t7400-submodule-basic.sh ***
-ok 1 - setup - initial commit
-ok 2 - configuration parsing
-ok 3 - setup - repository in init subdirectory
-ok 4 - setup - commit with gitlink
-ok 5 - setup - hide init subdirectory
-ok 6 - setup - repository to add submodules to
-ok 7 - submodule add
-ok 8 - submodule add to .gitignored path fails
-ok 9 - submodule add to .gitignored path with --force
-ok 10 - submodule add --branch
-ok 11 - submodule add with ./ in path
-ok 12 - submodule add with /././ in path
-ok 13 - submodule add with // in path
-ok 14 - submodule add with /.. in path
-ok 15 - submodule add with ./, /.. and // in path
-ok 16 - submodule add in subdirectory
-ok 17 - submodule add in subdirectory with relative path should fail
-ok 18 - setup - add an example entry to .gitmodules
-ok 19 - status should fail for unmapped paths
-ok 20 - setup - map path in .gitmodules
-ok 21 - status should only print one line
-ok 22 - setup - fetch commit name from submodule
-ok 23 - status should initially be "missing"
-ok 24 - init should register submodule url in .git/config
-ok 25 - init should fail with unknown submodule
-ok 26 - update should fail with unknown submodule
-ok 27 - status should fail with unknown submodule
-ok 28 - sync should fail with unknown submodule
-ok 29 - update should fail when path is used by a file
-ok 30 - update should fail when path is used by a nonempty directory
-ok 31 - update should work when path is an empty dir
-ok 32 - status should be "up-to-date" after update
-ok 33 - status "up-to-date" from subdirectory
-ok 34 - status "up-to-date" from subdirectory with path
-ok 35 - status should be "modified" after submodule commit
-ok 36 - the --cached sha1 should be rev1
-ok 37 - git diff should report the SHA1 of the new submodule commit
-ok 38 - update should checkout rev1
-ok 39 - status should be "up-to-date" after update
-ok 40 - checkout superproject with subproject already present
-ok 41 - apply submodule diff
-ok 42 - update --init
-ok 43 - update --init from subdirectory
-ok 44 - do not add files from a submodule
-ok 45 - gracefully add/reset submodule with a trailing slash
-ok 46 - ls-files gracefully handles trailing slash
-ok 47 - moving to a commit without submodule does not leave empty dir
-ok 48 - submodule <invalid-subcommand> fails
-ok 49 - add submodules without specifying an explicit path
-ok 50 - add should fail when path is used by a file
-ok 51 - add should fail when path is used by an existing directory
-ok 52 - use superproject as upstream when path is relative and no url is set there
-ok 53 - set up for relative path tests
-ok 54 - ../subrepo works with URL - ssh://hostname/repo
-ok 55 - ../subrepo works with port-qualified URL - ssh://hostname:22/repo
-ok 56 - ../subrepo path works with local path - //somewhere else/repo
-ok 57 - ../subrepo works with file URL - file:///tmp/repo
-ok 58 - ../subrepo works with helper URL- helper:://hostname/repo
-ok 59 - ../subrepo works with scp-style URL - [email protected]:repo
-ok 60 - ../subrepo works with scp-style URL - u[email protected]:path/to/repo
-ok 61 - ../subrepo works with relative local path - foo
-ok 62 - ../subrepo works with relative local path - foo/bar
-ok 63 - ../subrepo works with relative local path - ./foo
-ok 64 - ../subrepo works with relative local path - ./foo/bar
-ok 65 - ../subrepo works with relative local path - ../foo
-ok 66 - ../subrepo works with relative local path - ../foo/bar
-ok 67 - ../bar/a/b/c works with relative local path - ../foo/bar.git
-ok 68 - moving the superproject does not break submodules
-ok 69 - submodule add --name allows to replace a submodule with another at the same path
-ok 70 - submodule add with an existing name fails unless forced
-ok 71 - set up a second submodule
-ok 72 - submodule deinit should remove the whole submodule section from .git/config
-ok 73 - submodule deinit from subdirectory
-ok 74 - submodule deinit . deinits all initialized submodules
-ok 75 - submodule deinit deinits a submodule when its work tree is missing or empty
-ok 76 - submodule deinit fails when the submodule contains modifications unless forced
-ok 77 - submodule deinit fails when the submodule contains untracked files unless forced
-ok 78 - submodule deinit fails when the submodule HEAD does not match unless forced
-ok 79 - submodule deinit is silent when used on an uninitialized submodule
-ok 80 - submodule deinit fails when submodule has a .git directory even when forced
-ok 81 - submodule with UTF-8 name
-ok 82 - submodule add clone shallow submodule
-ok 83 - submodule helper list is not confused by common prefixes
-# passed all 83 test(s)
-1..83
+ok 1 - submodule deinit works on empty repository
+ok 2 - setup - initial commit
+ok 3 - submodule init aborts on missing .gitmodules file
+ok 4 - submodule update aborts on missing .gitmodules file
+ok 5 - configuration parsing
+ok 6 - setup - repository in init subdirectory
+ok 7 - setup - commit with gitlink
+ok 8 - setup - hide init subdirectory
+ok 9 - setup - repository to add submodules to
+ok 10 - submodule add
+ok 11 - submodule add to .gitignored path fails
+ok 12 - submodule add to .gitignored path with --force
+ok 13 - submodule add to reconfigure existing submodule with --force
+ok 14 - submodule add --branch
+ok 15 - submodule add with ./ in path
+ok 16 - submodule add with /././ in path
+ok 17 - submodule add with // in path
+ok 18 - submodule add with /.. in path
+ok 19 - submodule add with ./, /.. and // in path
+ok 20 - submodule add in subdirectory
+ok 21 - submodule add in subdirectory with relative path should fail
+ok 22 - setup - add an example entry to .gitmodules
+ok 23 - status should fail for unmapped paths
+ok 24 - setup - map path in .gitmodules
+ok 25 - status should only print one line
+ok 26 - setup - fetch commit name from submodule
+ok 27 - status should initially be "missing"
+ok 28 - init should register submodule url in .git/config
+ok 29 - init should fail with unknown submodule
+ok 30 - update should fail with unknown submodule
+ok 31 - status should fail with unknown submodule
+ok 32 - sync should fail with unknown submodule
+ok 33 - update should fail when path is used by a file
+ok 34 - update should fail when path is used by a nonempty directory
+ok 35 - update should work when path is an empty dir
+ok 36 - status should be "up-to-date" after update
+ok 37 - status "up-to-date" from subdirectory
+ok 38 - status "up-to-date" from subdirectory with path
+ok 39 - status should be "modified" after submodule commit
+ok 40 - the --cached sha1 should be rev1
+ok 41 - git diff should report the SHA1 of the new submodule commit
+ok 42 - update should checkout rev1
+ok 43 - status should be "up-to-date" after update
+ok 44 - checkout superproject with subproject already present
+ok 45 - apply submodule diff
+ok 46 - update --init
+ok 47 - update --init from subdirectory
+ok 48 - do not add files from a submodule
+ok 49 - gracefully add/reset submodule with a trailing slash
+ok 50 - ls-files gracefully handles trailing slash
+ok 51 - moving to a commit without submodule does not leave empty dir
+ok 52 - submodule <invalid-subcommand> fails
+ok 53 - add submodules without specifying an explicit path
+ok 54 - add should fail when path is used by a file
+ok 55 - add should fail when path is used by an existing directory
+ok 56 - use superproject as upstream when path is relative and no url is set there
+ok 57 - set up for relative path tests
+ok 58 - ../subrepo works with URL - ssh://hostname/repo
+ok 59 - ../subrepo works with port-qualified URL - ssh://hostname:22/repo
+ok 60 - ../subrepo path works with local path - //somewhere else/repo
+ok 61 - ../subrepo works with file URL - file:///tmp/repo
+ok 62 - ../subrepo works with helper URL- helper:://hostname/repo
+ok 63 - ../subrepo works with scp-style URL - [email protected]:repo
+ok 64 - ../subrepo works with scp-style URL - [email protected]:path/to/repo
+ok 65 - ../subrepo works with relative local path - foo
+ok 66 - ../subrepo works with relative local path - foo/bar
+ok 67 - ../subrepo works with relative local path - ./foo
+ok 68 - ../subrepo works with relative local path - ./foo/bar
+ok 69 - ../subrepo works with relative local path - ../foo
+ok 70 - ../subrepo works with relative local path - ../foo/bar
+ok 71 - ../bar/a/b/c works with relative local path - ../foo/bar.git
+ok 72 - moving the superproject does not break submodules
+ok 73 - submodule add --name allows to replace a submodule with another at the same path
+ok 74 - recursive relative submodules stay relative
+ok 75 - submodule add with an existing name fails unless forced
+ok 76 - set up a second submodule
+ok 77 - submodule deinit works on repository without submodules
+ok 78 - submodule deinit should remove the whole submodule section from .git/config
+ok 79 - submodule deinit from subdirectory
+ok 80 - submodule deinit . deinits all initialized submodules
+ok 81 - submodule deinit --all deinits all initialized submodules
+ok 82 - submodule deinit deinits a submodule when its work tree is missing or empty
+ok 83 - submodule deinit fails when the submodule contains modifications unless forced
+ok 84 - submodule deinit fails when the submodule contains untracked files unless forced
+ok 85 - submodule deinit fails when the submodule HEAD does not match unless forced
+ok 86 - submodule deinit is silent when used on an uninitialized submodule
+ok 87 - submodule deinit fails when submodule has a .git directory even when forced
+ok 88 - submodule with UTF-8 name
+ok 89 - submodule add clone shallow submodule
+ok 90 - submodule helper list is not confused by common prefixes
+# passed all 90 test(s)
+1..90
 *** t7401-submodule-summary.sh ***
 ok 1 - added submodule
 ok 2 - added submodule (subdirectory)
@@ -12873,48 +13953,57 @@
 ok 1 - setup a submodule tree
 ok 2 - submodule update detaching the HEAD 
 ok 3 - submodule update from subdirectory
-ok 4 - submodule update does not fetch already present commits
-ok 5 - submodule update should fail due to local changes
-ok 6 - submodule update should throw away changes with --force 
-ok 7 - submodule update --force forcibly checks out submodules
-ok 8 - submodule update --remote should fetch upstream changes
-ok 9 - local config should override .gitmodules branch
-ok 10 - submodule update --rebase staying on master
-ok 11 - submodule update --merge staying on master
-ok 12 - submodule update - rebase in .git/config
-ok 13 - submodule update - checkout in .git/config but --rebase given
-ok 14 - submodule update - merge in .git/config
-ok 15 - submodule update - checkout in .git/config but --merge given
-ok 16 - submodule update - checkout in .git/config
-ok 17 - submodule update - command in .git/config
-ok 18 - submodule update - command in .git/config catches failure
-ok 19 - submodule init does not copy command into .git/config
-ok 20 - submodule init picks up rebase
-ok 21 - submodule init picks up merge
-ok 22 - submodule update --merge  - ignores --merge  for new submodules
-ok 23 - submodule update --rebase - ignores --rebase for new submodules
-ok 24 - submodule update ignores update=merge config for new submodules
-ok 25 - submodule update ignores update=rebase config for new submodules
-ok 26 - submodule init picks up update=none
-ok 27 - submodule update - update=none in .git/config
-ok 28 - submodule update - update=none in .git/config but --checkout given
-ok 29 - submodule update --init skips submodule with update=none
-ok 30 - submodule update continues after checkout error
-ok 31 - submodule update continues after recursive checkout error
-ok 32 - submodule update exit immediately in case of merge conflict
-ok 33 - submodule update exit immediately after recursive rebase error
-ok 34 - add different submodules to the same path
-ok 35 - submodule add places git-dir in superprojects git-dir
-ok 36 - submodule update places git-dir in superprojects git-dir
-ok 37 - submodule add places git-dir in superprojects git-dir recursive
-ok 38 - submodule update places git-dir in superprojects git-dir recursive
-ok 39 - submodule add properly re-creates deeper level submodules
-ok 40 - submodule update properly revives a moved submodule
-ok 41 - submodule update can handle symbolic links in pwd
-ok 42 - submodule update clone shallow submodule
-ok 43 - submodule update --recursive drops module name before recursing
-# passed all 43 test(s)
-1..43
+ok 4 - submodule update --init --recursive from subdirectory
+ok 5 - submodule update --init from and of subdirectory
+ok 6 - submodule update does not fetch already present commits
+ok 7 - submodule update should fail due to local changes
+ok 8 - submodule update should throw away changes with --force 
+ok 9 - submodule update --force forcibly checks out submodules
+ok 10 - submodule update --remote should fetch upstream changes
+ok 11 - submodule update --remote should fetch upstream changes with .
+ok 12 - local config should override .gitmodules branch
+ok 13 - submodule update --rebase staying on master
+ok 14 - submodule update --merge staying on master
+ok 15 - submodule update - rebase in .git/config
+ok 16 - submodule update - checkout in .git/config but --rebase given
+ok 17 - submodule update - merge in .git/config
+ok 18 - submodule update - checkout in .git/config but --merge given
+ok 19 - submodule update - checkout in .git/config
+ok 20 - submodule update - command in .git/config
+ok 21 - submodule update - command in .git/config catches failure
+ok 22 - submodule update - command in .git/config catches failure -- subdirectory
+ok 23 - submodule update - command run for initial population of submodule
+ok 24 - recursive submodule update - command in .git/config catches failure -- subdirectory
+ok 25 - submodule init does not copy command into .git/config
+ok 26 - submodule init picks up rebase
+ok 27 - submodule init picks up merge
+ok 28 - submodule update --merge  - ignores --merge  for new submodules
+ok 29 - submodule update --rebase - ignores --rebase for new submodules
+ok 30 - submodule update ignores update=merge config for new submodules
+ok 31 - submodule update ignores update=rebase config for new submodules
+ok 32 - submodule init picks up update=none
+ok 33 - submodule update - update=none in .git/config
+ok 34 - submodule update - update=none in .git/config but --checkout given
+ok 35 - submodule update --init skips submodule with update=none
+ok 36 - submodule update continues after checkout error
+ok 37 - submodule update continues after recursive checkout error
+ok 38 - submodule update exit immediately in case of merge conflict
+ok 39 - submodule update exit immediately after recursive rebase error
+ok 40 - add different submodules to the same path
+ok 41 - submodule add places git-dir in superprojects git-dir
+ok 42 - submodule update places git-dir in superprojects git-dir
+ok 43 - submodule add places git-dir in superprojects git-dir recursive
+ok 44 - submodule update places git-dir in superprojects git-dir recursive
+ok 45 - submodule add properly re-creates deeper level submodules
+ok 46 - submodule update properly revives a moved submodule
+ok 47 - submodule update can handle symbolic links in pwd
+ok 48 - submodule update clone shallow submodule
+ok 49 - submodule update clone shallow submodule outside of depth
+ok 50 - submodule update --recursive drops module name before recursing
+ok 51 - submodule update can be run in parallel
+ok 52 - git clone passes the parallel jobs config on to submodules
+# passed all 52 test(s)
+1..52
 *** t7407-submodule-foreach.sh ***
 ok 1 - setup a submodule tree
 ok 2 - test basic "submodule foreach" usage
@@ -12923,31 +14012,36 @@
 ok 5 - use "submodule foreach" to checkout 2nd level submodule
 ok 6 - use "foreach --recursive" to checkout all submodules
 ok 7 - test messages from "foreach --recursive"
-ok 8 - test "foreach --quiet --recursive"
-ok 9 - use "update --recursive" to checkout all submodules
-ok 10 - test "status --recursive"
-ok 11 - ensure "status --cached --recursive" preserves the --cached flag
-ok 12 - use "git clone --recursive" to checkout all submodules
-ok 13 - test "update --recursive" with a flag with spaces
-ok 14 - use "update --recursive nested1" to checkout all submodules rooted in nested1
-ok 15 - command passed to foreach retains notion of stdin
-ok 16 - command passed to foreach --recursive retains notion of stdin
-ok 17 - multi-argument command passed to foreach is not shell-evaluated twice
-# passed all 17 test(s)
-1..17
+ok 8 - test messages from "foreach --recursive" from subdirectory
+ok 9 - test "foreach --quiet --recursive"
+ok 10 - use "update --recursive" to checkout all submodules
+ok 11 - test "status --recursive"
+ok 12 - ensure "status --cached --recursive" preserves the --cached flag
+ok 13 - test "status --recursive" from sub directory
+ok 14 - use "git clone --recursive" to checkout all submodules
+ok 15 - test "update --recursive" with a flag with spaces
+ok 16 - use "update --recursive nested1" to checkout all submodules rooted in nested1
+ok 17 - command passed to foreach retains notion of stdin
+ok 18 - command passed to foreach --recursive retains notion of stdin
+ok 19 - multi-argument command passed to foreach is not shell-evaluated twice
+# passed all 19 test(s)
+1..19
 *** t7408-submodule-reference.sh ***
 ok 1 - preparing first repository
 ok 2 - preparing second repository
 ok 3 - preparing superproject
-ok 4 - submodule add --reference
-ok 5 - after add: existence of info/alternates
-ok 6 - that reference gets used with add
-ok 7 - cloning superproject
-ok 8 - update with reference
-ok 9 - after update: existence of info/alternates
-ok 10 - that reference gets used with update
-# passed all 10 test(s)
-1..10
+ok 4 - submodule add --reference uses alternates
+ok 5 - that reference gets used with add
+ok 6 - updating superproject keeps alternates
+ok 7 - submodules use alternates when cloning a superproject
+ok 8 - missing submodule alternate fails clone and submodule update
+ok 9 - ignoring missing submodule alternates passes clone and submodule update
+ok 10 - preparing second superproject with a nested submodule plus partial clone
+ok 11 - nested submodule alternate in works and is actually used
+ok 12 - missing nested submodule alternate fails clone and submodule update
+ok 13 - missing nested submodule alternate in --reference-if-able mode
+# passed all 13 test(s)
+1..13
 *** t7409-submodule-detached-work-tree.sh ***
 ok 1 - submodule on detached working tree
 ok 2 - submodule on detached working pointed by core.worktree
@@ -12970,11 +14064,28 @@
 ok 2 - test parsing and lookup of submodule config by path
 ok 3 - test parsing and lookup of submodule config by name
 ok 4 - error in one submodule config lets continue
-ok 5 - reading of local configuration
-ok 6 - local error in fetchrecursesubmodule dies early
-ok 7 - error in history in fetchrecursesubmodule lets continue
-# passed all 7 test(s)
-1..7
+ok 5 - error message contains blob reference
+ok 6 - using different treeishs works
+ok 7 - reading of local configuration
+ok 8 - reading of local configuration for uninitialized submodules
+ok 9 - local error in fetchrecursesubmodule dies early
+ok 10 - error in history in fetchrecursesubmodule lets continue
+# passed all 10 test(s)
+1..10
+*** t7412-submodule-absorbgitdirs.sh ***
+ok 1 - setup a real submodule
+ok 2 - absorb the git dir
+ok 3 - absorbing does not fail for deinitalized submodules
+ok 4 - setup nested submodule
+ok 5 - absorb the git dir in a nested submodule
+ok 6 - re-setup nested submodule
+ok 7 - absorb the git dir in a nested submodule
+ok 8 - setup a gitlink with missing .gitmodules entry
+ok 9 - absorbing the git dir fails for incomplete submodules
+ok 10 - setup a submodule with multiple worktrees
+ok 11 - absorbing fails for a submodule with multiple worktrees
+# passed all 11 test(s)
+1..11
 *** t7500-commit.sh ***
 ok 1 - a basic commit in an empty tree should succeed
 ok 2 - nonexistent template file should return error
@@ -13037,45 +14148,50 @@
 ok 23 - setup: commit message from file
 ok 24 - amend commit
 ok 25 - amend --only ignores staged contents
-ok 26 - set up editor
-ok 27 - amend without launching editor
-ok 28 - --amend --edit
-ok 29 - --amend --edit of empty message
-ok 30 - -m --edit
-ok 31 - -m and -F do not mix
-ok 32 - using message from other commit
-ok 33 - editing message from other commit
-ok 34 - message from stdin
-ok 35 - overriding author from command line
-ok 36 - interactive add
-ok 37 - commit --interactive doesn't change index if editor aborts
-ok 38 - editor not invoked if -F is given
-ok 39 - partial commit that involves removal (1)
-ok 40 - partial commit that involves removal (2)
-ok 41 - partial commit that involves removal (3)
-ok 42 - amend commit to fix author
-ok 43 - amend commit to fix date
-ok 44 - commit mentions forced date in output
-ok 45 - commit complains about completely bogus dates
-ok 46 - commit --date allows approxidate
-ok 47 - sign off (1)
-ok 48 - sign off (2)
-ok 49 - signoff gap
-ok 50 - signoff gap 2
-ok 51 - multiple -m
-ok 52 - amend commit to fix author
-ok 53 - git commit <file> with dirty index
-ok 54 - same tree (single parent)
-ok 55 - same tree (single parent) --allow-empty
-ok 56 - same tree (merge and amend merge)
-ok 57 - amend using the message from another commit
-ok 58 - amend using the message from a commit named with tag
-ok 59 - amend can copy notes
-ok 60 - commit a file whose name is a dash
-ok 61 - --only works on to-be-born branch
+ok 26 - allow-empty --only ignores staged contents
+ok 27 - set up editor
+ok 28 - amend without launching editor
+ok 29 - --amend --edit
+ok 30 - --amend --edit of empty message
+ok 31 - --amend to set message to empty
+ok 32 - --amend to set empty message needs --allow-empty-message
+ok 33 - -m --edit
+ok 34 - -m and -F do not mix
+ok 35 - using message from other commit
+ok 36 - editing message from other commit
+ok 37 - message from stdin
+ok 38 - overriding author from command line
+ok 39 - interactive add
+ok 40 - commit --interactive doesn't change index if editor aborts
+ok 41 - editor not invoked if -F is given
+ok 42 - partial commit that involves removal (1)
+ok 43 - partial commit that involves removal (2)
+ok 44 - partial commit that involves removal (3)
+ok 45 - amend commit to fix author
+ok 46 - amend commit to fix date
+ok 47 - commit mentions forced date in output
+ok 48 - commit complains about completely bogus dates
+ok 49 - commit --date allows approxidate
+ok 50 - sign off (1)
+ok 51 - sign off (2)
+ok 52 - signoff gap
+ok 53 - signoff gap 2
+ok 54 - signoff respects trailer config
+ok 55 - multiple -m
+ok 56 - amend commit to fix author
+ok 57 - git commit <file> with dirty index
+ok 58 - same tree (single parent)
+ok 59 - same tree (single parent) --allow-empty
+ok 60 - same tree (merge and amend merge)
+ok 61 - amend using the message from another commit
+ok 62 - amend using the message from a commit named with tag
+ok 63 - amend can copy notes
+ok 64 - commit a file whose name is a dash
+ok 65 - --only works on to-be-born branch
+ok 66 - --dry-run with conflicts fixed from a merge
 # still have 2 known breakage(s)
-# passed all remaining 59 test(s)
-1..61
+# passed all remaining 64 test(s)
+1..66
 *** t7502-commit.sh ***
 ok 1 - output summary format
 ok 2 - output summary format: root-commit
@@ -13120,30 +14236,28 @@
 ok 41 - A single-liner subject with a token plus colon is not a footer
 ok 42 - commit -s places sob on third line after two empty lines
 ok 43 - commit
-ok 44 - commit
-ok 45 - commit --status
-ok 46 - commit --no-status
-ok 47 - commit with commit.status = yes
-ok 48 - commit with commit.status = no
-ok 49 - commit --status with commit.status = yes
-ok 50 - commit --no-status with commit.status = yes
-ok 51 - commit --status with commit.status = no
-ok 52 - commit --no-status with commit.status = no
-ok 53 - commit
-ok 54 - commit
-ok 55 - commit --status
-ok 56 - commit --no-status
-ok 57 - commit with commit.status = yes
-ok 58 - commit with commit.status = no
-ok 59 - commit --status with commit.status = yes
-ok 60 - commit --no-status with commit.status = yes
-ok 61 - commit --status with commit.status = no
-ok 62 - commit --no-status with commit.status = no
-ok 63 - commit --status with custom comment character
-ok 64 - switch core.commentchar
-ok 65 - switch core.commentchar but out of options
-# passed all 65 test(s)
-1..65
+ok 44 - commit --status
+ok 45 - commit --no-status
+ok 46 - commit with commit.status = yes
+ok 47 - commit with commit.status = no
+ok 48 - commit --status with commit.status = yes
+ok 49 - commit --no-status with commit.status = yes
+ok 50 - commit --status with commit.status = no
+ok 51 - commit --no-status with commit.status = no
+ok 52 - commit
+ok 53 - commit --status
+ok 54 - commit --no-status
+ok 55 - commit with commit.status = yes
+ok 56 - commit with commit.status = no
+ok 57 - commit --status with commit.status = yes
+ok 58 - commit --no-status with commit.status = yes
+ok 59 - commit --status with commit.status = no
+ok 60 - commit --no-status with commit.status = no
+ok 61 - commit --status with custom comment character
+ok 62 - switch core.commentchar
+ok 63 - switch core.commentchar but out of options
+# passed all 63 test(s)
+1..63
 *** t7503-pre-commit-hook.sh ***
 ok 1 - with no hook
 ok 2 - --no-verify with no hook
@@ -13240,8 +14354,43 @@
 ok 7 - diff in message is retained with -v
 ok 8 - submodule log is stripped out too with -v
 ok 9 - verbose diff is stripped out with set core.commentChar
-# passed all 9 test(s)
-1..9
+ok 10 - status does not verbose without --verbose
+ok 11 - setup -v -v
+ok 12 - commit.verbose=true and --verbose omitted
+ok 13 - commit.verbose=1 and --verbose omitted
+ok 14 - commit.verbose=false and --verbose omitted
+ok 15 - commit.verbose=-2 and --verbose omitted
+ok 16 - commit.verbose=-1 and --verbose omitted
+ok 17 - commit.verbose=0 and --verbose omitted
+ok 18 - commit.verbose=2 and --verbose omitted
+ok 19 - commit.verbose=3 and --verbose omitted
+ok 20 - commit.verbose=true and --verbose
+ok 21 - commit.verbose=true and --no-verbose
+ok 22 - commit.verbose=true and -v -v
+ok 23 - commit.verbose=false and --verbose
+ok 24 - commit.verbose=false and --no-verbose
+ok 25 - commit.verbose=false and -v -v
+ok 26 - commit.verbose=-2 and --verbose
+ok 27 - commit.verbose=-2 and --no-verbose
+ok 28 - commit.verbose=-2 and -v -v
+ok 29 - commit.verbose=-1 and --verbose
+ok 30 - commit.verbose=-1 and --no-verbose
+ok 31 - commit.verbose=-1 and -v -v
+ok 32 - commit.verbose=0 and --verbose
+ok 33 - commit.verbose=0 and --no-verbose
+ok 34 - commit.verbose=0 and -v -v
+ok 35 - commit.verbose=1 and --verbose
+ok 36 - commit.verbose=1 and --no-verbose
+ok 37 - commit.verbose=1 and -v -v
+ok 38 - commit.verbose=2 and --verbose
+ok 39 - commit.verbose=2 and --no-verbose
+ok 40 - commit.verbose=2 and -v -v
+ok 41 - commit.verbose=3 and --verbose
+ok 42 - commit.verbose=3 and --no-verbose
+ok 43 - commit.verbose=3 and -v -v
+ok 44 - status ignores commit.verbose=true
+# passed all 44 test(s)
+1..44
 *** t7508-status.sh ***
 ok 1 - status -h in broken repository
 ok 2 - commit -h in broken repository
@@ -13372,10 +14521,12 @@
 ok 8 - amending already signed commit
 ok 9 - show good signature with custom format
 ok 10 - show bad signature with custom format
-ok 11 - show unknown signature with custom format
-ok 12 - show lack of signature with custom format
-# passed all 12 test(s)
-1..12
+ok 11 - show untrusted signature with custom format
+ok 12 - show unknown signature with custom format
+ok 13 - show lack of signature with custom format
+ok 14 - log.showsignature behaves like --show-signature
+# passed all 14 test(s)
+1..14
 *** t7511-status-index.sh ***
 ok 1 - status, filename length 1
 ok 2 - status, filename length 2
@@ -13443,8 +14594,9 @@
 ok 37 - status: one command done nothing remaining
 ok 38 - status: two commands done with some white lines in done file
 ok 39 - status: two remaining commands with some white lines in todo file
-# passed all 39 test(s)
-1..39
+ok 40 - status: handle not-yet-started rebase -i gracefully
+# passed all 40 test(s)
+1..40
 *** t7513-interpret-trailers.sh ***
 ok 1 - setup
 ok 2 - without config
@@ -13453,54 +14605,71 @@
 ok 5 - with config option on the command line
 ok 6 - with only a title in the message
 ok 7 - with multiline title in the message
-ok 8 - with config setup
-ok 9 - with config setup and ":=" as separators
-ok 10 - with config setup and "%" as separators
-ok 11 - with "%" as separators and a message with trailers
-ok 12 - with config setup and ":=#" as separators
-ok 13 - with commit basic message
-ok 14 - with basic patch
-ok 15 - with commit complex message as argument
-ok 16 - with 2 files arguments
-ok 17 - with message that has comments
-ok 18 - with message that has an old style conflict block
-ok 19 - with commit complex message and trailer args
-ok 20 - with complex patch, args and --trim-empty
-ok 21 - using "where = before"
-ok 22 - using "where = after"
-ok 23 - using "where = end"
-ok 24 - using "where = start"
-ok 25 - using "where = before" for a token in the middle of the message
-ok 26 - using "where = before" and --trim-empty
-ok 27 - the default is "ifExists = addIfDifferentNeighbor"
-ok 28 - default "ifExists" is now "addIfDifferent"
-ok 29 - using "ifExists = addIfDifferent" with "where = end"
-ok 30 - using "ifExists = addIfDifferent" with "where = before"
-ok 31 - using "ifExists = addIfDifferentNeighbor" with "where = end"
-ok 32 - using "ifExists = addIfDifferentNeighbor"  with "where = after"
-ok 33 - using "ifExists = addIfDifferentNeighbor" and --trim-empty
-ok 34 - using "ifExists = add" with "where = end"
-ok 35 - using "ifExists = add" with "where = after"
-ok 36 - using "ifExists = replace"
-ok 37 - using "ifExists = replace" with "where = after"
-ok 38 - using "ifExists = doNothing"
-ok 39 - the default is "ifMissing = add"
-ok 40 - when default "ifMissing" is "doNothing"
-ok 41 - using "ifMissing = add" with "where = end"
-ok 42 - using "ifMissing = add" with "where = before"
-ok 43 - using "ifMissing = doNothing"
-ok 44 - default "where" is now "after"
-ok 45 - with simple command
-ok 46 - with command using commiter information
-ok 47 - with command using author information
-ok 48 - setup a commit
-ok 49 - with command using $ARG
-ok 50 - with failing command using $ARG
-ok 51 - with empty tokens
-ok 52 - with command but no key
-ok 53 - with no command and no key
-# passed all 53 test(s)
-1..53
+ok 8 - with non-trailer lines mixed with Signed-off-by
+ok 9 - with non-trailer lines mixed with cherry picked from
+ok 10 - with non-trailer lines mixed with a configured trailer
+ok 11 - with non-trailer lines mixed with a non-configured trailer
+ok 12 - with all non-configured trailers
+ok 13 - with non-trailer lines only
+ok 14 - line with leading whitespace is not trailer
+ok 15 - multiline field treated as one trailer for 25% check
+ok 16 - multiline field treated as atomic for placement
+ok 17 - multiline field treated as atomic for replacement
+ok 18 - multiline field treated as atomic for difference check
+ok 19 - multiline field treated as atomic for neighbor check
+ok 20 - with config setup
+ok 21 - with config setup and ":=" as separators
+ok 22 - with config setup and "%" as separators
+ok 23 - with "%" as separators and a message with trailers
+ok 24 - with config setup and ":=#" as separators
+ok 25 - with commit basic message
+ok 26 - with basic patch
+ok 27 - with commit complex message as argument
+ok 28 - with 2 files arguments
+ok 29 - with message that has comments
+ok 30 - with message that has an old style conflict block
+ok 31 - with commit complex message and trailer args
+ok 32 - with complex patch, args and --trim-empty
+ok 33 - in-place editing with basic patch
+ok 34 - in-place editing with additional trailer
+ok 35 - in-place editing on stdin disallowed
+ok 36 - in-place editing on non-existing file
+ok 37 - in-place editing doesn't clobber original file on error
+ok 38 - using "where = before"
+ok 39 - using "where = after"
+ok 40 - using "where = end"
+ok 41 - using "where = start"
+ok 42 - using "where = before" for a token in the middle of the message
+ok 43 - using "where = before" and --trim-empty
+ok 44 - the default is "ifExists = addIfDifferentNeighbor"
+ok 45 - default "ifExists" is now "addIfDifferent"
+ok 46 - using "ifExists = addIfDifferent" with "where = end"
+ok 47 - using "ifExists = addIfDifferent" with "where = before"
+ok 48 - using "ifExists = addIfDifferentNeighbor" with "where = end"
+ok 49 - using "ifExists = addIfDifferentNeighbor"  with "where = after"
+ok 50 - using "ifExists = addIfDifferentNeighbor" and --trim-empty
+ok 51 - using "ifExists = add" with "where = end"
+ok 52 - using "ifExists = add" with "where = after"
+ok 53 - using "ifExists = replace"
+ok 54 - using "ifExists = replace" with "where = after"
+ok 55 - using "ifExists = doNothing"
+ok 56 - the default is "ifMissing = add"
+ok 57 - when default "ifMissing" is "doNothing"
+ok 58 - using "ifMissing = add" with "where = end"
+ok 59 - using "ifMissing = add" with "where = before"
+ok 60 - using "ifMissing = doNothing"
+ok 61 - default "where" is now "after"
+ok 62 - with simple command
+ok 63 - with command using commiter information
+ok 64 - with command using author information
+ok 65 - setup a commit
+ok 66 - with command using $ARG
+ok 67 - with failing command using $ARG
+ok 68 - with empty tokens
+ok 69 - with command but no key
+ok 70 - with no command and no key
+# passed all 70 test(s)
+1..70
 *** t7514-commit-patch.sh ***
 ok 1 - setup (initial)
 ok 2 - edit hunk "commit -p -m message"
@@ -13518,6 +14687,22 @@
 ok 2 - race to create non-orphan commit
 # passed all 2 test(s)
 1..2
+*** t7517-per-repo-email.sh ***
+ok 1 - setup a likely user.useConfigOnly use case
+ok 2 - fails committing if clone email is not set
+ok 3 - fails committing if clone email is not set, but EMAIL set
+ok 4 - succeeds committing if clone email is set
+ok 5 - succeeds cloning if global email is not set
+ok 6 - set up rebase scenarios
+ok 7 - fast-forward rebase does not care about ident
+ok 8 - non-fast-forward rebase refuses to write commits
+ok 9 - fast-forward rebase does not care about ident (interactive)
+ok 10 - non-fast-forward rebase refuses to write commits (interactive)
+ok 11 - noop interactive rebase does not care about ident
+ok 12 - fast-forward rebase does not care about ident (preserve)
+ok 13 - non-fast-forward rebase refuses to write commits (preserve)
+# passed all 13 test(s)
+1..13
 *** t7600-merge.sh ***
 ok 1 - setup
 ok 2 - test option parsing
@@ -13527,52 +14712,55 @@
 ok 6 - merge c0 with c1 with --ff-only
 ok 7 - merge from unborn branch
 ok 8 - merge c1 with c2
-ok 9 - merge c1 with c2 and c3
-ok 10 - merges with --ff-only
-ok 11 - merges with merge.ff=only
-ok 12 - merge c0 with c1 (no-commit)
-ok 13 - merge c1 with c2 (no-commit)
-ok 14 - merge c1 with c2 and c3 (no-commit)
-ok 15 - merge c0 with c1 (squash)
-ok 16 - merge c0 with c1 (squash, ff-only)
-ok 17 - merge c1 with c2 (squash)
-ok 18 - unsuccessful merge of c1 with c2 (squash, ff-only)
-ok 19 - merge c1 with c2 and c3 (squash)
-ok 20 - merge c1 with c2 (no-commit in config)
-ok 21 - merge c1 with c2 (log in config)
-ok 22 - merge c1 with c2 (log in config gets overridden)
-ok 23 - merge c1 with c2 (squash in config)
-ok 24 - override config option -n with --summary
-ok 25 - override config option -n with --stat
-ok 26 - override config option --stat
-ok 27 - merge c1 with c2 (override --no-commit)
-ok 28 - merge c1 with c2 (override --squash)
-ok 29 - merge c0 with c1 (no-ff)
-ok 30 - merge c0 with c1 (merge.ff=false)
-ok 31 - combine branch.master.mergeoptions with merge.ff
-ok 32 - tolerate unknown values for merge.ff
-ok 33 - combining --squash and --no-ff is refused
-ok 34 - option --ff-only overwrites --no-ff
-ok 35 - option --no-ff overrides merge.ff=only config
-ok 36 - merge c0 with c1 (ff overrides no-ff)
-ok 37 - merge log message
-ok 38 - merge c1 with c0, c2, c0, and c1
+ok 9 - merge --squash c3 with c7
+ok 10 - merge c1 with c2 and c3
+ok 11 - merges with --ff-only
+ok 12 - merges with merge.ff=only
+ok 13 - merge c0 with c1 (no-commit)
+ok 14 - merge c1 with c2 (no-commit)
+ok 15 - merge c1 with c2 and c3 (no-commit)
+ok 16 - merge c0 with c1 (squash)
+ok 17 - merge c0 with c1 (squash, ff-only)
+ok 18 - merge c1 with c2 (squash)
+ok 19 - unsuccessful merge of c1 with c2 (squash, ff-only)
+ok 20 - merge c1 with c2 and c3 (squash)
+ok 21 - merge c1 with c2 (no-commit in config)
+ok 22 - merge c1 with c2 (log in config)
+ok 23 - merge c1 with c2 (log in config gets overridden)
+ok 24 - merge c1 with c2 (squash in config)
+ok 25 - override config option -n with --summary
+ok 26 - override config option -n with --stat
+ok 27 - override config option --stat
+ok 28 - merge c1 with c2 (override --no-commit)
+ok 29 - merge c1 with c2 (override --squash)
+ok 30 - merge c0 with c1 (no-ff)
+ok 31 - merge c0 with c1 (merge.ff=false)
+ok 32 - combine branch.master.mergeoptions with merge.ff
+ok 33 - tolerate unknown values for merge.ff
+ok 34 - combining --squash and --no-ff is refused
+ok 35 - option --ff-only overwrites --no-ff
+ok 36 - option --no-ff overrides merge.ff=only config
+ok 37 - merge c0 with c1 (ff overrides no-ff)
+ok 38 - merge log message
 ok 39 - merge c1 with c0, c2, c0, and c1
-ok 40 - merge c1 with c1 and c2
-ok 41 - merge fast-forward in a dirty tree
-ok 42 - in-index merge
-ok 43 - refresh the index before merging
-ok 44 - merge early part of c2
-ok 45 - merge --no-ff --no-commit && commit
-ok 46 - amending no-ff merge commit
-ok 47 - merge --no-ff --edit
-ok 48 - merge --ff-only tag
-ok 49 - merge --no-edit tag should skip editor
-ok 50 - set up mod-256 conflict scenario
-ok 51 - merge detects mod-256 conflicts (recursive)
-ok 52 - merge detects mod-256 conflicts (resolve)
-# passed all 52 test(s)
-1..52
+ok 40 - merge c1 with c0, c2, c0, and c1
+ok 41 - merge c1 with c1 and c2
+ok 42 - merge fast-forward in a dirty tree
+ok 43 - in-index merge
+ok 44 - refresh the index before merging
+ok 45 - merge early part of c2
+ok 46 - merge --no-ff --no-commit && commit
+ok 47 - amending no-ff merge commit
+ok 48 - merge --no-ff --edit
+ok 49 - merge --ff-only tag
+ok 50 - merge --no-edit tag should skip editor
+ok 51 - set up mod-256 conflict scenario
+ok 52 - merge detects mod-256 conflicts (recursive)
+ok 53 - merge detects mod-256 conflicts (resolve)
+ok 54 - merge nothing into void
+ok 55 - merge can be completed with --continue
+# passed all 55 test(s)
+1..55
 *** t7601-merge-pull-config.sh ***
 ok 1 - setup
 ok 2 - merge c1 with c2
@@ -13623,9 +14811,10 @@
 *** t7605-merge-resolve.sh ***
 ok 1 - setup
 ok 2 - merge c1 to c2
-ok 3 - merge c2 to c3 (fails)
-# passed all 3 test(s)
-1..3
+ok 3 - merge c1 to c2, again
+ok 4 - merge c2 to c3 (fails)
+# passed all 4 test(s)
+1..4
 *** t7606-merge-custom.sh ***
 ok 1 - set up custom strategy
 ok 2 - setup
@@ -13679,20 +14868,27 @@
 ok 4 - mergetool in subdir
 ok 5 - mergetool on file in parent dir
 ok 6 - mergetool skips autoresolved
-ok 7 - mergetool merges all from subdir
-ok 8 - mergetool skips resolved paths when rerere is active
-ok 9 - conflicted stash sets up rerere
-ok 10 - mergetool takes partial path
-ok 11 - deleted vs modified submodule
-ok 12 - file vs modified submodule
-ok 13 - submodule in subdirectory
-ok 14 - directory vs modified submodule
-ok 15 - file with no base
-ok 16 - custom commands override built-ins
-ok 17 - filenames seen by tools start with ./
-ok 18 - temporary filenames are used with mergetool.writeToTemp
-# passed all 18 test(s)
-1..18
+ok 7 - mergetool merges all from subdir (rerere disabled)
+ok 8 - mergetool merges all from subdir (rerere enabled)
+ok 9 - mergetool skips resolved paths when rerere is active
+ok 10 - conflicted stash sets up rerere
+ok 11 - mergetool takes partial path
+ok 12 - mergetool delete/delete conflict
+ok 13 - mergetool produces no errors when keepBackup is used
+ok 14 - mergetool honors tempfile config for deleted files
+ok 15 - mergetool keeps tempfiles when aborting delete/delete
+ok 16 - deleted vs modified submodule
+ok 17 - file vs modified submodule
+ok 18 - submodule in subdirectory
+ok 19 - directory vs modified submodule
+ok 20 - file with no base
+ok 21 - custom commands override built-ins
+ok 22 - filenames seen by tools start with ./
+ok 23 - temporary filenames are used with mergetool.writeToTemp
+ok 24 - diff.orderFile configuration is honored
+ok 25 - mergetool -Oorder-file is honored
+# passed all 25 test(s)
+1..25
 *** t7611-merge-abort.sh ***
 ok 1 - setup
 ok 2 - fails without MERGE_HEAD (unstarted merge)
@@ -13810,73 +15006,87 @@
 ok 3 - unpacked objects receive timestamp of pack file
 ok 4 - do not bother loosening old objects
 ok 5 - keep packed objects found only in index
-# passed all 5 test(s)
-1..5
+ok 6 - repack -k keeps unreachable packed objects
+ok 7 - repack -k packs unreachable loose objects
+# passed all 7 test(s)
+1..7
 *** t7702-repack-cyclic-alternate.sh ***
 ok 1 - setup
 ok 2 - re-packing repository with itsself as alternate
 # passed all 2 test(s)
 1..2
 *** t7800-difftool.sh ***
-ok 1 - setup
-ok 2 - custom commands
-ok 3 - custom tool commands override built-ins
-ok 4 - difftool ignores bad --tool values
-ok 5 - difftool forwards arguments to diff
-ok 6 - difftool ignores exit code
-ok 7 - difftool forwards exit code with --trust-exit-code
-ok 8 - difftool forwards exit code with --trust-exit-code for built-ins
-ok 9 - difftool honors difftool.trustExitCode = true
-ok 10 - difftool honors difftool.trustExitCode = false
-ok 11 - difftool ignores exit code with --no-trust-exit-code
-ok 12 - difftool stops on error with --trust-exit-code
-ok 13 - difftool honors --gui
-ok 14 - difftool --gui last setting wins
-ok 15 - difftool --gui works without configured diff.guitool
-ok 16 - GIT_DIFF_TOOL variable
-ok 17 - GIT_DIFF_TOOL overrides
-ok 18 - GIT_DIFFTOOL_NO_PROMPT variable
-ok 19 - GIT_DIFFTOOL_PROMPT variable
-ok 20 - difftool.prompt config variable is false
-ok 21 - difftool merge.prompt = false
-ok 22 - difftool.prompt can overridden with -y
-ok 23 - difftool.prompt can overridden with --prompt
-ok 24 - difftool last flag wins
-ok 25 - difftool + mergetool config variables
-ok 26 - difftool.<tool>.path
-ok 27 - difftool --extcmd=cat
-ok 28 - difftool --extcmd cat
-ok 29 - difftool -x cat
-ok 30 - difftool --extcmd echo arg1
-ok 31 - difftool --extcmd cat arg1
-ok 32 - difftool --extcmd cat arg2
-ok 33 - setup with 2 files different
-ok 34 - say no to the first file
-ok 35 - say no to the second file
-ok 36 - ending prompt input with EOF
-ok 37 - difftool --tool-help
-ok 38 - setup change in subdirectory
-ok 39 - difftool -d --no-symlinks
-ok 40 - difftool -d --symlinks
-ok 41 - difftool --dir-diff --no-symlinks
-ok 42 - difftool --dir-diff --symlinks
-ok 43 - difftool --dir-diff ignores --prompt --no-symlinks
-ok 44 - difftool --dir-diff ignores --prompt --symlinks
-ok 45 - difftool --dir-diff from subdirectory --no-symlinks
-ok 46 - difftool --dir-diff from subdirectory --symlinks
-ok 47 - difftool --dir-diff when worktree file is missing --no-symlinks
-ok 48 - difftool --dir-diff when worktree file is missing --symlinks
-ok 49 - difftool --dir-diff --symlink without unstaged changes
-ok 50 - difftool --dir-diff syncs worktree with unstaged change --no-symlinks
-ok 51 - difftool --dir-diff syncs worktree with unstaged change --symlinks
-ok 52 - difftool --dir-diff syncs worktree without unstaged change --no-symlinks
-ok 53 - difftool --dir-diff syncs worktree without unstaged change --symlinks
-ok 54 - difftool --no-symlinks does not overwrite working tree file 
-ok 55 - difftool --no-symlinks detects conflict 
-ok 56 - difftool properly honors gitlink and core.worktree
-ok 57 - difftool --dir-diff symlinked directories
-# passed all 57 test(s)
-1..57
+ok 1 - basic usage requires no repo
+ok 2 - setup
+ok 3 - custom commands
+ok 4 - custom tool commands override built-ins
+ok 5 - difftool ignores bad --tool values
+ok 6 - difftool forwards arguments to diff
+ok 7 - difftool ignores exit code
+ok 8 - difftool forwards exit code with --trust-exit-code
+ok 9 - difftool forwards exit code with --trust-exit-code for built-ins
+ok 10 - difftool honors difftool.trustExitCode = true
+ok 11 - difftool honors difftool.trustExitCode = false
+ok 12 - difftool ignores exit code with --no-trust-exit-code
+ok 13 - difftool stops on error with --trust-exit-code
+ok 14 - difftool honors exit status if command not found
+ok 15 - difftool honors --gui
+ok 16 - difftool --gui last setting wins
+ok 17 - difftool --gui works without configured diff.guitool
+ok 18 - GIT_DIFF_TOOL variable
+ok 19 - GIT_DIFF_TOOL overrides
+ok 20 - GIT_DIFFTOOL_NO_PROMPT variable
+ok 21 - GIT_DIFFTOOL_PROMPT variable
+ok 22 - difftool.prompt config variable is false
+ok 23 - difftool merge.prompt = false
+ok 24 - difftool.prompt can overridden with -y
+ok 25 - difftool.prompt can overridden with --prompt
+ok 26 - difftool last flag wins
+ok 27 - difftool + mergetool config variables
+ok 28 - difftool.<tool>.path
+ok 29 - difftool --extcmd=cat
+ok 30 - difftool --extcmd cat
+ok 31 - difftool -x cat
+ok 32 - difftool --extcmd echo arg1
+ok 33 - difftool --extcmd cat arg1
+ok 34 - difftool --extcmd cat arg2
+ok 35 - setup with 2 files different
+ok 36 - say no to the first file
+ok 37 - say no to the second file
+ok 38 - ending prompt input with EOF
+ok 39 - difftool --tool-help
+ok 40 - setup change in subdirectory
+ok 41 - difftool -d --no-symlinks
+ok 42 - difftool -d --symlinks
+ok 43 - difftool --dir-diff --no-symlinks
+ok 44 - difftool --dir-diff --symlinks
+ok 45 - difftool --dir-diff ignores --prompt --no-symlinks
+ok 46 - difftool --dir-diff ignores --prompt --symlinks
+ok 47 - difftool --dir-diff branch from subdirectory --no-symlinks
+ok 48 - difftool --dir-diff branch from subdirectory --symlinks
+ok 49 - difftool --dir-diff v1 from subdirectory --no-symlinks
+ok 50 - difftool --dir-diff v1 from subdirectory --symlinks
+ok 51 - difftool --dir-diff branch from subdirectory w/ pathspec --no-symlinks
+ok 52 - difftool --dir-diff branch from subdirectory w/ pathspec --symlinks
+ok 53 - difftool --dir-diff v1 from subdirectory w/ pathspec --no-symlinks
+ok 54 - difftool --dir-diff v1 from subdirectory w/ pathspec --symlinks
+ok 55 - difftool --dir-diff from subdirectory with GIT_DIR set --no-symlinks
+ok 56 - difftool --dir-diff from subdirectory with GIT_DIR set --symlinks
+ok 57 - difftool --dir-diff when worktree file is missing --no-symlinks
+ok 58 - difftool --dir-diff when worktree file is missing --symlinks
+ok 59 - difftool --dir-diff with unmerged files --no-symlinks
+ok 60 - difftool --dir-diff with unmerged files --symlinks
+ok 61 - difftool --dir-diff --symlink without unstaged changes
+ok 62 - difftool --dir-diff syncs worktree with unstaged change --no-symlinks
+ok 63 - difftool --dir-diff syncs worktree with unstaged change --symlinks
+ok 64 - difftool --dir-diff syncs worktree without unstaged change --no-symlinks
+ok 65 - difftool --dir-diff syncs worktree without unstaged change --symlinks
+ok 66 - difftool --no-symlinks does not overwrite working tree file 
+ok 67 - difftool --no-symlinks detects conflict 
+ok 68 - difftool properly honors gitlink and core.worktree
+ok 69 - difftool --dir-diff symlinked directories
+# passed all 69 test(s)
+1..69
 *** t7810-grep.sh ***
 ok 1 - setup
 ok 2 - grep should not segfault with a bad input
@@ -13947,7 +15157,7 @@
 ok 67 - grep --count in working tree
 ok 68 - grep --count -h in working tree
 ok 69 - grep -l -C
-ok 70 - grep -l -C
+ok 70 - grep -c -C
 ok 71 - grep -L -C
 ok 72 - grep -e A --and -e B
 ok 73 - grep ( -e A --or -e B ) --and -e B
@@ -13989,57 +15199,66 @@
 ok 109 - grep -p
 ok 110 - grep -p -B5
 ok 111 - grep -W
-ok 112 - grep -W with userdiff
-ok 113 - grep from a subdirectory to search wider area (1)
-ok 114 - grep from a subdirectory to search wider area (2)
-ok 115 - grep -Fi
-ok 116 - outside of git repository
-ok 117 - inside git repository but with --no-index
-ok 118 - setup double-dash tests
-ok 119 - grep -- pattern
-ok 120 - grep -- pattern -- pathspec
-ok 121 - grep -e pattern -- path
-ok 122 - grep -e -- -- path
-ok 123 - grep --perl-regexp pattern
-ok 124 - grep -P pattern
-ok 125 - grep pattern with grep.extendedRegexp=true
-ok 126 - grep -P pattern with grep.extendedRegexp=true
-ok 127 - grep -P -v pattern
-ok 128 - grep -P -i pattern
-ok 129 - grep -P -w pattern
-ok 130 - grep -G invalidpattern properly dies 
-ok 131 - grep invalidpattern properly dies with grep.patternType=basic
-ok 132 - grep -E invalidpattern properly dies 
-ok 133 - grep invalidpattern properly dies with grep.patternType=extended
-ok 134 - grep -P invalidpattern properly dies 
-ok 135 - grep invalidpattern properly dies with grep.patternType=perl
-ok 136 - grep -G -E -F pattern
-ok 137 - grep pattern with grep.patternType=basic, =extended, =fixed
-ok 138 - grep -E -F -G pattern
-ok 139 - grep pattern with grep.patternType=extended, =fixed, =basic
-ok 140 - grep -F -G -E pattern
-ok 141 - grep pattern with grep.patternType=fixed, =basic, =extended
-ok 142 - grep -G -F -P -E pattern
-ok 143 - grep pattern with grep.patternType=fixed, =basic, =perl, =extended
-ok 144 - grep -G -F -E -P pattern
-ok 145 - grep pattern with grep.patternType=fixed, =basic, =extended, =perl
-ok 146 - grep -P pattern with grep.patternType=fixed
-ok 147 - grep -F pattern with grep.patternType=basic
-ok 148 - grep -G pattern with grep.patternType=fixed
-ok 149 - grep -E pattern with grep.patternType=fixed
-ok 150 - grep --color, separator
-ok 151 - grep --break
-ok 152 - grep --break with context
-ok 153 - grep --heading
-ok 154 - mimic ack-grep --group
-ok 155 - grep -E "^ "
-ok 156 - grep -P "^ "
-ok 157 - grep --color -e A -e B with context
-ok 158 - grep --color -e A --and -e B with context
-ok 159 - grep --color -e A --and --not -e B with context
-ok 160 - grep --color -e A --and -e B -p with context
-# passed all 160 test(s)
-1..160
+ok 112 - grep -W shows no trailing empty lines
+ok 113 - grep -W with userdiff
+ok 114 - grep from a subdirectory to search wider area (1)
+ok 115 - grep from a subdirectory to search wider area (2)
+ok 116 - grep -Fi
+ok 117 - outside of git repository
+ok 118 - outside of git repository with fallbackToNoIndex
+ok 119 - inside git repository but with --no-index
+ok 120 - grep --no-index descends into repos, but not .git
+ok 121 - setup double-dash tests
+ok 122 - grep -- pattern
+ok 123 - grep -- pattern -- pathspec
+ok 124 - grep -e pattern -- path
+ok 125 - grep -e -- -- path
+ok 126 - grep --perl-regexp pattern
+ok 127 - grep -P pattern
+ok 128 - grep pattern with grep.extendedRegexp=true
+ok 129 - grep -P pattern with grep.extendedRegexp=true
+ok 130 - grep -P -v pattern
+ok 131 - grep -P -i pattern
+ok 132 - grep -P -w pattern
+ok 133 - grep -G invalidpattern properly dies 
+ok 134 - grep invalidpattern properly dies with grep.patternType=basic
+ok 135 - grep -E invalidpattern properly dies 
+ok 136 - grep invalidpattern properly dies with grep.patternType=extended
+ok 137 - grep -P invalidpattern properly dies 
+ok 138 - grep invalidpattern properly dies with grep.patternType=perl
+ok 139 - grep -G -E -F pattern
+ok 140 - grep pattern with grep.patternType=basic, =extended, =fixed
+ok 141 - grep -E -F -G pattern
+ok 142 - grep pattern with grep.patternType=extended, =fixed, =basic
+ok 143 - grep -F -G -E pattern
+ok 144 - grep pattern with grep.patternType=fixed, =basic, =extended
+ok 145 - grep -G -F -P -E pattern
+ok 146 - grep pattern with grep.patternType=fixed, =basic, =perl, =extended
+ok 147 - grep -G -F -E -P pattern
+ok 148 - grep pattern with grep.patternType=fixed, =basic, =extended, =perl
+ok 149 - grep -P pattern with grep.patternType=fixed
+ok 150 - grep -F pattern with grep.patternType=basic
+ok 151 - grep -G pattern with grep.patternType=fixed
+ok 152 - grep -E pattern with grep.patternType=fixed
+ok 153 - grep --color, separator
+ok 154 - grep --break
+ok 155 - grep --break with context
+ok 156 - grep --heading
+ok 157 - mimic ack-grep --group
+ok 158 - grep -E "^ "
+ok 159 - grep -P "^ "
+ok 160 - grep --color -e A -e B with context
+ok 161 - grep --color -e A --and -e B with context
+ok 162 - grep --color -e A --and --not -e B with context
+ok 163 - grep --color -e A --and -e B -p with context
+ok 164 - grep can find things only in the work tree
+ok 165 - grep can find things only in the work tree (i-t-a)
+ok 166 - grep does not search work tree with assume unchanged
+ok 167 - grep can find things only in the index
+ok 168 - grep does not report i-t-a with -L --cached
+ok 169 - grep does not report i-t-a and assume unchanged with -L
+# passed all 169 test(s)
+1..169
 *** t7811-grep-open.sh ***
 ok 1 - determine default pager
 ok 2 - setup
@@ -14053,6 +15272,45 @@
 ok 10 - run from subdir
 # passed all 10 test(s)
 1..10
+*** t7812-grep-icase-non-ascii.sh ***
+# lib-gettext: Found 'is_IS.UTF-8' as an is_IS UTF-8 locale
+# lib-gettext: Found 'is_IS.ISO8859-1' as an is_IS ISO-8859-1 locale
+ok 1 - setup
+ok 2 # skip grep literal string, no -F (missing REGEX_LOCALE)
+ok 3 - grep pcre utf-8 icase
+ok 4 - grep pcre utf-8 string with "+"
+ok 5 # skip grep literal string, with -F (missing REGEX_LOCALE)
+ok 6 # skip grep string with regex, with -F (missing REGEX_LOCALE)
+ok 7 # skip pickaxe -i on non-ascii (missing REGEX_LOCALE)
+# passed all 7 test(s)
+1..7
+*** t7813-grep-icase-iso.sh ***
+# lib-gettext: Found 'is_IS.UTF-8' as an is_IS UTF-8 locale
+# lib-gettext: Found 'is_IS.ISO8859-1' as an is_IS ISO-8859-1 locale
+ok 1 - setup
+ok 2 - grep pcre string
+# passed all 2 test(s)
+1..2
+*** t7814-grep-recurse-submodules.sh ***
+ok 1 - setup directory structure and submodule
+ok 2 - grep correctly finds patterns in a submodule
+ok 3 - grep and basic pathspecs
+ok 4 - grep and nested submodules
+ok 5 - grep and multiple patterns
+ok 6 - grep and multiple patterns
+ok 7 - basic grep tree
+ok 8 - grep tree HEAD^
+ok 9 - grep tree HEAD^^
+ok 10 - grep tree and pathspecs
+ok 11 - grep tree and pathspecs
+ok 12 - grep tree and more pathspecs
+ok 13 - grep tree and more pathspecs
+ok 14 - grep recurse submodule colon in name
+ok 15 - grep history with moved submoules
+ok 16 - --recurse-submodules and --untracked are incompatible
+ok 17 - --recurse-submodules and --no-index are incompatible
+# passed all 17 test(s)
+1..17
 *** t8001-annotate.sh ***
 ok 1 - setup A lines
 ok 2 - blame 1 author
@@ -14270,14 +15528,20 @@
 ok 104 - blame -L X,+N (non-numeric N)
 ok 105 - blame -L X,-N (non-numeric N)
 ok 106 - blame -L ,^/RE/
-ok 107 - blame --show-email
-ok 108 - setup showEmail tests
-ok 109 - blame with no options and no config
-ok 110 - blame with showemail options
-ok 111 - blame with showEmail config false
-ok 112 - blame with showEmail config true
-# passed all 112 test(s)
-1..112
+ok 107 - blame untracked file in empty repo
+ok 108 - blame --show-email
+ok 109 - setup showEmail tests
+ok 110 - blame with no options and no config
+ok 111 - blame with showemail options
+ok 112 - blame with showEmail config false
+ok 113 - blame with showEmail config true
+ok 114 - set up abbrev tests
+ok 115 - blame --abbrev=<n> works
+ok 116 - blame -l aligns regular and boundary commits
+ok 117 - blame --abbrev=40 behaves like -l
+ok 118 - --no-abbrev works like --abbrev=40
+# passed all 118 test(s)
+1..118
 *** t8003-blame-corner-cases.sh ***
 ok 1 - setup
 ok 2 - straight copy without -C
@@ -14292,18 +15556,21 @@
 ok 11 - append with -C -C -C
 ok 12 - blame wholesale copy
 ok 13 - blame wholesale copy and more
-ok 14 - blame path that used to be a directory
-ok 15 - blame to a commit with no author name
-ok 16 - blame -L with invalid start
-ok 17 - blame -L with invalid end
-ok 18 - blame parses <end> part of -L
-ok 19 - indent of line numbers, nine lines
-ok 20 - indent of line numbers, ten lines
-ok 21 - setup file with CRLF newlines
-ok 22 - blame file with CRLF core.autocrlf true
-ok 23 - blame file with CRLF attributes text
-# passed all 23 test(s)
-1..23
+ok 14 - blame wholesale copy and more in the index
+ok 15 - blame during cherry-pick with file rename conflict
+ok 16 - blame path that used to be a directory
+ok 17 - blame to a commit with no author name
+ok 18 - blame -L with invalid start
+ok 19 - blame -L with invalid end
+ok 20 - blame parses <end> part of -L
+ok 21 - indent of line numbers, nine lines
+ok 22 - indent of line numbers, ten lines
+ok 23 - setup file with CRLF newlines
+ok 24 - blame file with CRLF core.autocrlf true
+ok 25 - blame file with CRLF attributes text
+ok 26 - blame file with CRLF core.autocrlf=true
+# passed all 26 test(s)
+1..26
 *** t8004-blame-with-conflicts.sh ***
 ok 1 - setup first case
 ok 2 - blame runs on unconflicted file while other file has conflicts
@@ -14355,13 +15622,38 @@
 ok 2 - normal blame output
 ok 3 - blame --porcelain output
 ok 4 - blame --line-porcelain output
-# passed all 4 test(s)
-1..4
+ok 5 - --porcelain detects first non-blank line as subject
+# passed all 5 test(s)
+1..5
 *** t8009-blame-vs-topicbranches.sh ***
 ok 1 - setup
 ok 2 - blame --reverse --first-parent finds A1
 # passed all 2 test(s)
 1..2
+*** t8010-cat-file-filters.sh ***
+ok 1 - setup 
+ok 2 - no filters with `git show`
+ok 3 - no filters with cat-file
+ok 4 - cat-file --filters converts to worktree version
+ok 5 - cat-file --filters --path=<path> works
+ok 6 - cat-file --textconv --path=<path> works
+ok 7 - --path=<path> complains without --textconv/--filters
+ok 8 - cat-file --textconv --batch works
+# passed all 8 test(s)
+1..8
+*** t8011-blame-split-file.sh ***
+ok 1 - setup split file case
+ok 2 - setup simulated porcelain
+ok 3 - generate --porcelain output
+ok 4 - porcelain output finds correct commits
+ok 5 - porcelain output shows correct filenames
+ok 6 - porcelain output shows correct previous pointer
+ok 7 - generate --line-porcelain output
+ok 8 - line-porcelain output finds correct commits
+ok 9 - line-porcelain output shows correct filenames
+ok 10 - line-porcelain output shows correct previous pointer
+# passed all 10 test(s)
+1..10
 *** t9000-addresses.sh ***
 1..0 # SKIP Perl Mail::Address unavailable, skipping test
 *** t9001-send-email.sh ***
@@ -14380,140 +15672,142 @@
 ok 13 - Send patches with --envelope-sender=auto
 ok 14 - setup expect
 ok 15 - Verify commandline
-ok 16 - setup expect
-ok 17 - self name is suppressed
-ok 18 - self name with dot is suppressed
-ok 19 - non-ascii self name is suppressed
-ok 20 - long non-ascii self name is suppressed
-ok 21 - sanitized self name is suppressed
-ok 22 - Show all headers
-ok 23 - Prompting works
-ok 24 # skip implicit ident is allowed (missing AUTOIDENT of PERL,AUTOIDENT)
-ok 25 - broken implicit ident aborts send-email
-ok 26 - setup tocmd and cccmd scripts
-ok 27 - tocmd works
-ok 28 - cccmd works
-ok 29 - reject long lines
-ok 30 - no patch was sent
-ok 31 - Author From: in message body
-ok 32 - Author From: not in message body
-ok 33 - allow long lines with --no-validate
-ok 34 - Invalid In-Reply-To
-ok 35 - Valid In-Reply-To when prompting
-ok 36 - In-Reply-To without --chain-reply-to
-ok 37 - In-Reply-To with --chain-reply-to
-ok 38 - setup fake editor
-ok 39 - --compose works
-ok 40 - first message is compose text
-ok 41 - second message is patch
-ok 42 - setup expect
-ok 43 - sendemail.cc set
+ok 16 - setup expect for cc trailer
+ok 17 - cc trailer with various syntax
+ok 18 - setup expect
+ok 19 - self name is suppressed
+ok 20 - self name with dot is suppressed
+ok 21 - non-ascii self name is suppressed
+ok 22 - long non-ascii self name is suppressed
+ok 23 - sanitized self name is suppressed
+ok 24 - Show all headers
+ok 25 - Prompting works
+ok 26 # skip implicit ident is allowed (missing AUTOIDENT of PERL,AUTOIDENT)
+ok 27 - broken implicit ident aborts send-email
+ok 28 - setup tocmd and cccmd scripts
+ok 29 - tocmd works
+ok 30 - cccmd works
+ok 31 - reject long lines
+ok 32 - no patch was sent
+ok 33 - Author From: in message body
+ok 34 - Author From: not in message body
+ok 35 - allow long lines with --no-validate
+ok 36 - Invalid In-Reply-To
+ok 37 - Valid In-Reply-To when prompting
+ok 38 - In-Reply-To without --chain-reply-to
+ok 39 - In-Reply-To with --chain-reply-to
+ok 40 - setup fake editor
+ok 41 - --compose works
+ok 42 - first message is compose text
+ok 43 - second message is patch
 ok 44 - setup expect
-ok 45 - sendemail.cc unset
+ok 45 - sendemail.cc set
 ok 46 - setup expect
-ok 47 - sendemail.cccmd
+ok 47 - sendemail.cc unset
 ok 48 - setup expect
-ok 49 - --suppress-cc=all
+ok 49 - sendemail.cccmd
 ok 50 - setup expect
-ok 51 - --suppress-cc=body
+ok 51 - --suppress-cc=all
 ok 52 - setup expect
-ok 53 - --suppress-cc=body --suppress-cc=cccmd
+ok 53 - --suppress-cc=body
 ok 54 - setup expect
-ok 55 - --suppress-cc=sob
+ok 55 - --suppress-cc=body --suppress-cc=cccmd
 ok 56 - setup expect
-ok 57 - --suppress-cc=bodycc
+ok 57 - --suppress-cc=sob
 ok 58 - setup expect
-ok 59 - --suppress-cc=cc
-ok 60 - --confirm=always
-ok 61 - --confirm=auto
-ok 62 - --confirm=cc
-ok 63 - --confirm=compose
-ok 64 - confirm by default (due to cc)
-ok 65 - confirm by default (due to --compose)
-ok 66 - confirm detects EOF (inform assumes y)
-ok 67 - confirm detects EOF (auto causes failure)
-ok 68 - confirm does not loop forever
-ok 69 - utf8 Cc is rfc2047 encoded
-ok 70 - --compose adds MIME for utf8 body
-ok 71 - --compose respects user mime type
-ok 72 - --compose adds MIME for utf8 subject
-ok 73 - utf8 author is correctly passed on
-ok 74 - utf8 sender is not duplicated
-ok 75 - sendemail.composeencoding works
-ok 76 - --compose-encoding works
-ok 77 - --compose-encoding overrides sendemail.composeencoding
-ok 78 - --compose-encoding adds correct MIME for subject
-ok 79 - detects ambiguous reference/file conflict
-ok 80 - feed two files
-ok 81 - in-reply-to but no threading
-ok 82 - no in-reply-to and no threading
-ok 83 - threading but no chain-reply-to
-ok 84 - sendemail.to works
-ok 85 - --no-to overrides sendemail.to
-ok 86 - sendemail.cc works
-ok 87 - --no-cc overrides sendemail.cc
-ok 88 - sendemail.bcc works
-ok 89 - --no-bcc overrides sendemail.bcc
-ok 90 - patches To headers are used by default
-ok 91 - patches To headers are appended to
-ok 92 - To headers from files reset each patch
-ok 93 - setup expect
-ok 94 - setup expect
-ok 95 - ASCII subject is not RFC2047 quoted
+ok 59 - --suppress-cc=bodycc
+ok 60 - setup expect
+ok 61 - --suppress-cc=cc
+ok 62 - --confirm=always
+ok 63 - --confirm=auto
+ok 64 - --confirm=cc
+ok 65 - --confirm=compose
+ok 66 - confirm by default (due to cc)
+ok 67 - confirm by default (due to --compose)
+ok 68 - confirm detects EOF (inform assumes y)
+ok 69 - confirm detects EOF (auto causes failure)
+ok 70 - confirm does not loop forever
+ok 71 - utf8 Cc is rfc2047 encoded
+ok 72 - --compose adds MIME for utf8 body
+ok 73 - --compose respects user mime type
+ok 74 - --compose adds MIME for utf8 subject
+ok 75 - utf8 author is correctly passed on
+ok 76 - utf8 sender is not duplicated
+ok 77 - sendemail.composeencoding works
+ok 78 - --compose-encoding works
+ok 79 - --compose-encoding overrides sendemail.composeencoding
+ok 80 - --compose-encoding adds correct MIME for subject
+ok 81 - detects ambiguous reference/file conflict
+ok 82 - feed two files
+ok 83 - in-reply-to but no threading
+ok 84 - no in-reply-to and no threading
+ok 85 - threading but no chain-reply-to
+ok 86 - sendemail.to works
+ok 87 - --no-to overrides sendemail.to
+ok 88 - sendemail.cc works
+ok 89 - --no-cc overrides sendemail.cc
+ok 90 - sendemail.bcc works
+ok 91 - --no-bcc overrides sendemail.bcc
+ok 92 - patches To headers are used by default
+ok 93 - patches To headers are appended to
+ok 94 - To headers from files reset each patch
+ok 95 - setup expect
 ok 96 - setup expect
-ok 97 - asks about and fixes 8bit encodings
-ok 98 - sendemail.8bitEncoding works
-ok 99 - --8bit-encoding overrides sendemail.8bitEncoding
-ok 100 - setup expect
-ok 101 - setup expect
-ok 102 - --8bit-encoding also treats subject
+ok 97 - ASCII subject is not RFC2047 quoted
+ok 98 - setup expect
+ok 99 - asks about and fixes 8bit encodings
+ok 100 - sendemail.8bitEncoding works
+ok 101 - --8bit-encoding overrides sendemail.8bitEncoding
+ok 102 - setup expect
 ok 103 - setup expect
-ok 104 - sendemail.transferencoding=7bit fails on 8bit data
-ok 105 - --transfer-encoding overrides sendemail.transferEncoding
-ok 106 - sendemail.transferencoding=8bit
-ok 107 - setup expect
-ok 108 - 8-bit and sendemail.transferencoding=quoted-printable
+ok 104 - --8bit-encoding also treats subject
+ok 105 - setup expect
+ok 106 - sendemail.transferencoding=7bit fails on 8bit data
+ok 107 - --transfer-encoding overrides sendemail.transferEncoding
+ok 108 - sendemail.transferencoding=8bit
 ok 109 - setup expect
-ok 110 - 8-bit and sendemail.transferencoding=base64
+ok 110 - 8-bit and sendemail.transferencoding=quoted-printable
 ok 111 - setup expect
-ok 112 - convert from quoted-printable to base64
+ok 112 - 8-bit and sendemail.transferencoding=base64
 ok 113 - setup expect
-ok 114 - setup expect
-ok 115 - CRLF and sendemail.transferencoding=quoted-printable
+ok 114 - convert from quoted-printable to base64
+ok 115 - setup expect
 ok 116 - setup expect
-ok 117 - CRLF and sendemail.transferencoding=base64
-ok 118 - refusing to send cover letter template
-ok 119 - --force sends cover letter template anyway
-ok 120 - to-cover adds To to all mail
-ok 121 - cc-cover adds Cc to all mail
-ok 122 - tocover adds To to all mail
-ok 123 - cccover adds Cc to all mail
-ok 124 - escaped quotes in sendemail.aliasfiletype=mutt
-ok 125 - sendemail.aliasfiletype=mailrc
-ok 126 - sendemail.aliasfile=~/.mailrc
-ok 127 - --dump-aliases sendmail format
-ok 128 - --dump-aliases mutt format
-ok 129 - --dump-aliases mailrc format
-ok 130 - --dump-aliases pine format
-ok 131 - --dump-aliases gnus format
-ok 132 - --dump-aliases must be used alone
-ok 133 - sendemail.aliasfiletype=sendmail
-ok 134 - sendmail aliases line folding
-ok 135 - sendmail aliases tolerate bogus line folding
-ok 136 - sendmail aliases empty
-ok 137 - alias support in To header
-ok 138 - alias support in Cc header
-ok 139 - tocmd works with aliases
-ok 140 - cccmd works with aliases
-ok 141 - --[no-]xmailer without any configuration
-ok 142 - --[no-]xmailer with sendemail.xmailer=true
-ok 143 - --[no-]xmailer with sendemail.xmailer=false
-ok 144 - setup expected-list
-ok 145 - use email list in --cc --to and --bcc
-ok 146 - aliases work with email list
-ok 147 - leading and trailing whitespaces are removed
-# passed all 147 test(s)
-1..147
+ok 117 - CRLF and sendemail.transferencoding=quoted-printable
+ok 118 - setup expect
+ok 119 - CRLF and sendemail.transferencoding=base64
+ok 120 - refusing to send cover letter template
+ok 121 - --force sends cover letter template anyway
+ok 122 - to-cover adds To to all mail
+ok 123 - cc-cover adds Cc to all mail
+ok 124 - tocover adds To to all mail
+ok 125 - cccover adds Cc to all mail
+ok 126 - escaped quotes in sendemail.aliasfiletype=mutt
+ok 127 - sendemail.aliasfiletype=mailrc
+ok 128 - sendemail.aliasfile=~/.mailrc
+ok 129 - --dump-aliases sendmail format
+ok 130 - --dump-aliases mutt format
+ok 131 - --dump-aliases mailrc format
+ok 132 - --dump-aliases pine format
+ok 133 - --dump-aliases gnus format
+ok 134 - --dump-aliases must be used alone
+ok 135 - sendemail.aliasfiletype=sendmail