22854539 git 2.7.4
authorDanek Duvall <danek.duvall@oracle.com>
Thu, 24 Mar 2016 11:11:33 -0700
changeset 5672 4467fa93b3b7
parent 5671 bdb5ca05c3ce
child 5673 03a73b3209f6
22854539 git 2.7.4 22959674 problem in UTILITY/GIT
components/git/Makefile
components/git/git.p5m
components/git/patches/test.patch
components/git/test/results-64.master
--- a/components/git/Makefile	Tue Mar 29 11:52:32 2016 -0700
+++ b/components/git/Makefile	Thu Mar 24 11:11:33 2016 -0700
@@ -26,24 +26,24 @@
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=		git
-COMPONENT_VERSION=	2.6.1
+COMPONENT_VERSION=	2.7.4
 COMPONENT_PROJECT_URL=	http://git-scm.com/
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.xz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:fc7c727745d5eb0d796a16dc7c4b999c184830110e0aeb592c788597cc8e9ccd
+    sha256:dee574defbe05ec7356a0842ddbda51315926f2fa7e39c2539f2c3dcc52e457b
 COMPONENT_ARCHIVE_URL=	https://www.kernel.org/pub/software/scm/git/$(COMPONENT_ARCHIVE)
 COMPONENT_BUGDB=	utility/git
 
-TPNO=			24887
+TPNO=			27482
 
 #
 # man pages are a separate archive
 #
-COMPONENT_SRC_1=        $(COMPONENT_NAME)-manpages-$(COMPONENT_VERSION)
+COMPONENT_SRC_1 =	$(COMPONENT_NAME)-manpages-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE_1 =	$(COMPONENT_SRC_1).tar.xz
 COMPONENT_ARCHIVE_HASH_1 = \
-    sha256:e4cf64edcecd284d9ef4e6ca7fa0e8556d2414b5d9881a9abfe477f95b416391
+    sha256:d04fd81ab8aa32efbe54acd27ab5c88ef4ab615313e4cdfa793dd0065899ce25
 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)
@@ -52,14 +52,19 @@
 include $(WS_MAKE_RULES)/configure.mk
 include $(WS_MAKE_RULES)/ips.mk
 
-PKG_HARDLINKS +=	usr/lib/git-core/git-cherry-pick
+PKG_HARDLINKS +=	usr/lib/git-core/git
+PKG_HARDLINKS +=	usr/lib/git-core/git-cvsserver
+PKG_HARDLINKS +=	usr/lib/git-core/git-gui
 PKG_HARDLINKS +=	usr/lib/git-core/git-remote-ftps
+PKG_HARDLINKS +=	usr/lib/git-core/git-shell
+PKG_HARDLINKS +=	usr/lib/git-core/git-upload-pack
 
 PKG_MACROS +=		PYVER=$(PYTHON_VERSION)
 
 CONFIGURE_BINDIR.64 =	$(CONFIGURE_PREFIX)/bin
 CONFIGURE_LIBDIR.64 =	$(CONFIGURE_PREFIX)/lib
 
+CONFIGURE_SCRIPT    =	$(@D)/configure
 CONFIGURE_PREFIX    =	/usr
 CONFIGURE_OPTIONS  +=	--sysconfdir=/etc
 CONFIGURE_OPTIONS  +=	--libexecdir=/usr/lib
@@ -85,7 +90,23 @@
 COMPONENT_TEST_ENV = TERM=dumb
 # 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)
+COMPONENT_TEST_ARGS += $(if $(GITTEST_JOBS),-j$(GITTEST_JOBS),)
 COMPONENT_TEST_TARGETS = test
+# Enable tests requiring Apache
+COMPONENT_TEST_TARGETS += LIB_HTTPD_PATH=/usr/apache2/2.4/bin/httpd
+COMPONENT_TEST_TARGETS += LIB_HTTPD_MODULE_PATH=/usr/apache2/2.4/libexec
+# Put each test result in a file; necessary if jobs run in parallel
+COMPONENT_TEST_TARGETS += GIT_TEST_OPTS=--tee
+COMPONENT_TEST_TARGETS += DEFAULT_TEST_TARGET=test-noclean
+# Compile the test results and put that into the test output file instead
+COMPONENT_POST_TEST_ACTION = \
+	(cd $(COMPONENT_TEST_DIR)/t/test-results; for i in *.out; do \
+		echo "*** $${i%.out}.sh ***"; \
+		cat $$i; \
+	done; \
+	cd ..; \
+	$(GMAKE) -s aggregate-results) &> $(COMPONENT_TEST_OUTPUT)
 
 # This runs configure but configure doesn't generate a Makefile.
 # Instead a Makefile comes with git.
@@ -94,6 +115,7 @@
 
 COMPONENT_PRE_CONFIGURE_ACTION = \
 	($(CLONEY) $(SOURCE_DIR) $(@D))
+COMPONENT_PRE_CONFIGURE_ACTION += ; (cd $(@D); $(GMAKE) configure)
 
 ASLR_MODE = $(ASLR_ENABLE)
 
@@ -103,11 +125,11 @@
 
 install:	$(INSTALL_64)
 
-# There are some known issues around I18N.
 test:		$(TEST_64)
 
-system-test:    $(SYSTEM_TESTS_NOT_IMPLEMENTED)
+system-test:	$(SYSTEM_TESTS_NOT_IMPLEMENTED)
 
+REQUIRED_PACKAGES += crypto/gnupg
 REQUIRED_PACKAGES += library/expat
 REQUIRED_PACKAGES += library/pcre
 REQUIRED_PACKAGES += library/security/openssl
@@ -118,3 +140,4 @@
 REQUIRED_PACKAGES += shell/ksh93
 REQUIRED_PACKAGES += system/library
 REQUIRED_PACKAGES += web/curl
+REQUIRED_PACKAGES += web/server/apache-24
--- a/components/git/git.p5m	Tue Mar 29 11:52:32 2016 -0700
+++ b/components/git/git.p5m	Thu Mar 24 11:11:33 2016 -0700
@@ -20,7 +20,7 @@
 #
 
 #
-# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
 #
 
 <transform file path=usr/lib/git-core/.* -> default mode 0555>
@@ -44,44 +44,44 @@
 set name=org.opensolaris.arc-caseid value=LSARC/2008/360
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #
-hardlink path=usr/bin/git target=../lib/git-core/git-cherry-pick
+hardlink path=usr/bin/git target=../lib/git-core/git
 hardlink path=usr/bin/git-cvsserver target=../lib/git-core/git-cvsserver
-hardlink path=usr/bin/git-receive-pack target=../lib/git-core/git-cherry-pick
+hardlink path=usr/bin/git-receive-pack target=../lib/git-core/git
 hardlink path=usr/bin/git-shell target=../lib/git-core/git-shell
-hardlink path=usr/bin/git-upload-archive target=../lib/git-core/git-cherry-pick
+hardlink path=usr/bin/git-upload-archive target=../lib/git-core/git
 hardlink path=usr/bin/git-upload-pack target=../lib/git-core/git-upload-pack
 file path=usr/bin/gitk
-hardlink path=usr/lib/git-core/git target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-add target=git-cherry-pick
+file path=usr/lib/git-core/git
+hardlink path=usr/lib/git-core/git-add target=git
 file path=usr/lib/git-core/git-add--interactive
-hardlink path=usr/lib/git-core/git-am target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-annotate target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-apply target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-am target=git
+hardlink path=usr/lib/git-core/git-annotate target=git
+hardlink path=usr/lib/git-core/git-apply target=git
 file path=usr/lib/git-core/git-archimport
-hardlink path=usr/lib/git-core/git-archive target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-archive target=git
 file path=usr/lib/git-core/git-bisect
-hardlink path=usr/lib/git-core/git-bisect--helper target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-blame target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-branch target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-bundle target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-cat-file target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-check-attr target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-check-ignore target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-check-mailmap target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-check-ref-format target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-checkout target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-checkout-index target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-cherry target=git-cherry-pick
-file path=usr/lib/git-core/git-cherry-pick
+hardlink path=usr/lib/git-core/git-bisect--helper target=git
+hardlink path=usr/lib/git-core/git-blame target=git
+hardlink path=usr/lib/git-core/git-branch target=git
+hardlink path=usr/lib/git-core/git-bundle target=git
+hardlink path=usr/lib/git-core/git-cat-file target=git
+hardlink path=usr/lib/git-core/git-check-attr target=git
+hardlink path=usr/lib/git-core/git-check-ignore target=git
+hardlink path=usr/lib/git-core/git-check-mailmap target=git
+hardlink path=usr/lib/git-core/git-check-ref-format target=git
+hardlink path=usr/lib/git-core/git-checkout target=git
+hardlink path=usr/lib/git-core/git-checkout-index target=git
+hardlink path=usr/lib/git-core/git-cherry target=git
+hardlink path=usr/lib/git-core/git-cherry-pick target=git
 hardlink path=usr/lib/git-core/git-citool target=git-gui
-hardlink path=usr/lib/git-core/git-clean target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-clone target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-column target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-commit target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-commit-tree target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-config target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-count-objects target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-credential target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-clean target=git
+hardlink path=usr/lib/git-core/git-clone target=git
+hardlink path=usr/lib/git-core/git-column target=git
+hardlink path=usr/lib/git-core/git-commit target=git
+hardlink path=usr/lib/git-core/git-commit-tree target=git
+hardlink path=usr/lib/git-core/git-config target=git
+hardlink path=usr/lib/git-core/git-count-objects target=git
+hardlink path=usr/lib/git-core/git-credential target=git
 file path=usr/lib/git-core/git-credential-cache
 file path=usr/lib/git-core/git-credential-cache--daemon
 file path=usr/lib/git-core/git-credential-store
@@ -89,133 +89,134 @@
 file path=usr/lib/git-core/git-cvsimport
 file path=usr/lib/git-core/git-cvsserver
 file path=usr/lib/git-core/git-daemon
-hardlink path=usr/lib/git-core/git-describe target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-diff target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-diff-files target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-diff-index target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-diff-tree target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-describe target=git
+hardlink path=usr/lib/git-core/git-diff target=git
+hardlink path=usr/lib/git-core/git-diff-files target=git
+hardlink path=usr/lib/git-core/git-diff-index target=git
+hardlink path=usr/lib/git-core/git-diff-tree target=git
 file path=usr/lib/git-core/git-difftool
 file path=usr/lib/git-core/git-difftool--helper
-hardlink path=usr/lib/git-core/git-fast-export target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-fast-export target=git
 file path=usr/lib/git-core/git-fast-import
-hardlink path=usr/lib/git-core/git-fetch target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-fetch-pack target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-fetch target=git
+hardlink path=usr/lib/git-core/git-fetch-pack target=git
 file path=usr/lib/git-core/git-filter-branch
-hardlink path=usr/lib/git-core/git-fmt-merge-msg target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-for-each-ref target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-format-patch target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-fsck target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-fsck-objects target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-gc target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-get-tar-commit-id target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-grep target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-fmt-merge-msg target=git
+hardlink path=usr/lib/git-core/git-for-each-ref target=git
+hardlink path=usr/lib/git-core/git-format-patch target=git
+hardlink path=usr/lib/git-core/git-fsck target=git
+hardlink path=usr/lib/git-core/git-fsck-objects target=git
+hardlink path=usr/lib/git-core/git-gc target=git
+hardlink path=usr/lib/git-core/git-get-tar-commit-id target=git
+hardlink path=usr/lib/git-core/git-grep target=git
 file path=usr/lib/git-core/git-gui
 file path=usr/lib/git-core/git-gui--askpass
-hardlink path=usr/lib/git-core/git-hash-object target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-help target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-hash-object target=git
+hardlink path=usr/lib/git-core/git-help target=git
 file path=usr/lib/git-core/git-http-backend
 file path=usr/lib/git-core/git-http-fetch
 file path=usr/lib/git-core/git-http-push
 file path=usr/lib/git-core/git-imap-send
-hardlink path=usr/lib/git-core/git-index-pack target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-init target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-init-db target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-index-pack target=git
+hardlink path=usr/lib/git-core/git-init target=git
+hardlink path=usr/lib/git-core/git-init-db target=git
 file path=usr/lib/git-core/git-instaweb
-hardlink path=usr/lib/git-core/git-interpret-trailers target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-log target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-ls-files target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-ls-remote target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-ls-tree target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-mailinfo target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-mailsplit target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-merge target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-merge-base target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-merge-file target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-merge-index target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-interpret-trailers target=git
+hardlink path=usr/lib/git-core/git-log target=git
+hardlink path=usr/lib/git-core/git-ls-files target=git
+hardlink path=usr/lib/git-core/git-ls-remote target=git
+hardlink path=usr/lib/git-core/git-ls-tree target=git
+hardlink path=usr/lib/git-core/git-mailinfo target=git
+hardlink path=usr/lib/git-core/git-mailsplit target=git
+hardlink path=usr/lib/git-core/git-merge target=git
+hardlink path=usr/lib/git-core/git-merge-base target=git
+hardlink path=usr/lib/git-core/git-merge-file target=git
+hardlink path=usr/lib/git-core/git-merge-index target=git
 file path=usr/lib/git-core/git-merge-octopus
 file path=usr/lib/git-core/git-merge-one-file
-hardlink path=usr/lib/git-core/git-merge-ours target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-merge-recursive target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-merge-ours target=git
+hardlink path=usr/lib/git-core/git-merge-recursive target=git
 file path=usr/lib/git-core/git-merge-resolve
-hardlink path=usr/lib/git-core/git-merge-subtree target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-merge-tree target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-merge-subtree target=git
+hardlink path=usr/lib/git-core/git-merge-tree target=git
 file path=usr/lib/git-core/git-mergetool
 file path=usr/lib/git-core/git-mergetool--lib
-hardlink path=usr/lib/git-core/git-mktag target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-mktree target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-mv target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-name-rev target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-notes target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-mktag target=git
+hardlink path=usr/lib/git-core/git-mktree target=git
+hardlink path=usr/lib/git-core/git-mv target=git
+hardlink path=usr/lib/git-core/git-name-rev target=git
+hardlink path=usr/lib/git-core/git-notes target=git
 file path=usr/lib/git-core/git-p4
-hardlink path=usr/lib/git-core/git-pack-objects target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-pack-redundant target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-pack-refs target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-pack-objects target=git
+hardlink path=usr/lib/git-core/git-pack-redundant target=git
+hardlink path=usr/lib/git-core/git-pack-refs target=git
 file path=usr/lib/git-core/git-parse-remote
-hardlink path=usr/lib/git-core/git-patch-id target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-prune target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-prune-packed target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-pull target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-push target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-patch-id target=git
+hardlink path=usr/lib/git-core/git-prune target=git
+hardlink path=usr/lib/git-core/git-prune-packed target=git
+hardlink path=usr/lib/git-core/git-pull target=git
+hardlink path=usr/lib/git-core/git-push target=git
 file path=usr/lib/git-core/git-quiltimport
-hardlink path=usr/lib/git-core/git-read-tree target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-read-tree target=git
 file path=usr/lib/git-core/git-rebase
 file path=usr/lib/git-core/git-rebase--am
 file path=usr/lib/git-core/git-rebase--interactive
 file path=usr/lib/git-core/git-rebase--merge
-hardlink path=usr/lib/git-core/git-receive-pack target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-reflog target=git-cherry-pick
+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-cherry-pick
-hardlink path=usr/lib/git-core/git-remote-ext target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-remote-fd target=git-cherry-pick
+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
 hardlink path=usr/lib/git-core/git-remote-ftp target=git-remote-ftps
 file path=usr/lib/git-core/git-remote-ftps
 hardlink path=usr/lib/git-core/git-remote-http target=git-remote-ftps
 hardlink path=usr/lib/git-core/git-remote-https target=git-remote-ftps
 file path=usr/lib/git-core/git-remote-testsvn
-hardlink path=usr/lib/git-core/git-repack target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-replace target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-repack target=git
+hardlink path=usr/lib/git-core/git-replace target=git
 file path=usr/lib/git-core/git-request-pull
-hardlink path=usr/lib/git-core/git-rerere target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-reset target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-rev-list target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-rev-parse target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-revert target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-rm target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-rerere target=git
+hardlink path=usr/lib/git-core/git-reset target=git
+hardlink path=usr/lib/git-core/git-rev-list target=git
+hardlink path=usr/lib/git-core/git-rev-parse target=git
+hardlink path=usr/lib/git-core/git-revert target=git
+hardlink path=usr/lib/git-core/git-rm target=git
 file path=usr/lib/git-core/git-send-email
-hardlink path=usr/lib/git-core/git-send-pack target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-send-pack target=git
 file path=usr/lib/git-core/git-sh-i18n
 file path=usr/lib/git-core/git-sh-i18n--envsubst
 file path=usr/lib/git-core/git-sh-setup
 file path=usr/lib/git-core/git-shell
-hardlink path=usr/lib/git-core/git-shortlog target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-show target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-show-branch target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-shortlog target=git
+hardlink path=usr/lib/git-core/git-show target=git
+hardlink path=usr/lib/git-core/git-show-branch target=git
 file path=usr/lib/git-core/git-show-index
-hardlink path=usr/lib/git-core/git-show-ref target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-stage target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-show-ref target=git
+hardlink path=usr/lib/git-core/git-stage target=git
 file path=usr/lib/git-core/git-stash
-hardlink path=usr/lib/git-core/git-status target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-stripspace target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-status target=git
+hardlink path=usr/lib/git-core/git-stripspace target=git
 file path=usr/lib/git-core/git-submodule
+hardlink path=usr/lib/git-core/git-submodule--helper target=git
 file path=usr/lib/git-core/git-svn
-hardlink path=usr/lib/git-core/git-symbolic-ref target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-tag target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-unpack-file target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-unpack-objects target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-update-index target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-update-ref target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-update-server-info target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-upload-archive target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-symbolic-ref target=git
+hardlink path=usr/lib/git-core/git-tag target=git
+hardlink path=usr/lib/git-core/git-unpack-file target=git
+hardlink path=usr/lib/git-core/git-unpack-objects target=git
+hardlink path=usr/lib/git-core/git-update-index target=git
+hardlink path=usr/lib/git-core/git-update-ref target=git
+hardlink path=usr/lib/git-core/git-update-server-info target=git
+hardlink path=usr/lib/git-core/git-upload-archive target=git
 file path=usr/lib/git-core/git-upload-pack
-hardlink path=usr/lib/git-core/git-var target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-verify-commit target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-verify-pack target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-verify-tag target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-var target=git
+hardlink path=usr/lib/git-core/git-verify-commit target=git
+hardlink path=usr/lib/git-core/git-verify-pack target=git
+hardlink path=usr/lib/git-core/git-verify-tag target=git
 file path=usr/lib/git-core/git-web--browse
-hardlink path=usr/lib/git-core/git-whatchanged target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-worktree target=git-cherry-pick
-hardlink path=usr/lib/git-core/git-write-tree target=git-cherry-pick
+hardlink path=usr/lib/git-core/git-whatchanged target=git
+hardlink path=usr/lib/git-core/git-worktree target=git
+hardlink path=usr/lib/git-core/git-write-tree target=git
 file path=usr/lib/git-core/mergetools/araxis
 file path=usr/lib/git-core/mergetools/bc
 file path=usr/lib/git-core/mergetools/bc3
@@ -355,6 +356,7 @@
 file path=usr/share/locale/fr/LC_MESSAGES/git.mo
 file path=usr/share/locale/is/LC_MESSAGES/git.mo
 file path=usr/share/locale/it/LC_MESSAGES/git.mo
+file path=usr/share/locale/ko/LC_MESSAGES/git.mo
 file path=usr/share/locale/pt_PT/LC_MESSAGES/git.mo
 file path=usr/share/locale/ru/LC_MESSAGES/git.mo
 file path=usr/share/locale/sv/LC_MESSAGES/git.mo
--- a/components/git/patches/test.patch	Tue Mar 29 11:52:32 2016 -0700
+++ b/components/git/patches/test.patch	Thu Mar 24 11:11:33 2016 -0700
@@ -38,3 +38,65 @@
  	) &&
  
  	# place modified files in the worktree
+
+
+This simply adds a couple of targets to the test Makefile which allow us to
+run the tests in parallel cleanly.  This way the results don't get cleaned
+up automatically after running the tests, and we can emit those results to
+the master file.  This might be interesting to upstream, but is really
+specific to running the tests in an external framework.
+
+--- git-2.7.4/t/Makefile	Thu Mar 17 13:47:59 2016
++++ git-2.7.4/t/Makefile	Tue Mar 22 14:28:40 2016
+@@ -36,6 +36,9 @@
+ test: pre-clean $(TEST_LINT)
+ 	$(MAKE) aggregate-results-and-cleanup
+ 
++test-noclean: pre-clean $(TEST_LINT)
++	$(MAKE) T
++
+ prove: pre-clean $(TEST_LINT)
+ 	@echo "*** prove ***"; $(PROVE) --exec '$(SHELL_PATH_SQ)' $(GIT_PROVE_OPTS) $(T) :: $(GIT_TEST_OPTS)
+ 	$(MAKE) clean-except-prove-cache
+@@ -68,6 +71,8 @@
+ test-lint-shell-syntax:
+ 	@'$(PERL_PATH_SQ)' check-non-portable-shell.pl $(T) $(THELPERS)
+ 
++T: $(T)
++
+ aggregate-results-and-cleanup: $(T)
+ 	$(MAKE) aggregate-results
+ 	$(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
+@@ -1,5 +1,9 @@
+ #!/bin/sh
+ 
++gpg() {
++	gpg2 "$@"
++}
++
+ 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
+@@ -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	Tue Mar 29 11:52:32 2016 -0700
+++ b/components/git/test/results-64.master	Thu Mar 24 11:11:33 2016 -0700
@@ -1,188 +1,3 @@
-make[1]: Entering directory `$(@D)'
-    * new prefix flags
-    CC attr.o
-    CC config.o
-    CC exec_cmd.o
-    CC gettext.o
-    AR libgit.a
-    LINK git-credential-store
-    LINK git-daemon
-    LINK git-fast-import
-    LINK git-http-backend
-    LINK git-imap-send
-    LINK git-sh-i18n--envsubst
-    LINK git-shell
-    LINK git-show-index
-    LINK git-upload-pack
-    LINK git-remote-testsvn
-    LINK git-http-fetch
-    LINK git-http-push
-    LINK git-credential-cache
-    LINK git-credential-cache--daemon
-    LINK git-remote-http
-    LN/CP git-remote-https
-    LN/CP git-remote-ftp
-    LN/CP git-remote-ftps
-    SUBDIR perl
-make[2]: `perl.mak' is up to date.
-    GEN git-p4
-    CC git.o
-    CC builtin/help.o
-    CC builtin/init-db.o
-    LINK git
-    BUILTIN git-add
-    BUILTIN git-am
-    BUILTIN git-annotate
-    BUILTIN git-apply
-    BUILTIN git-archive
-    BUILTIN git-bisect--helper
-    BUILTIN git-blame
-    BUILTIN git-branch
-    BUILTIN git-bundle
-    BUILTIN git-cat-file
-    BUILTIN git-check-attr
-    BUILTIN git-check-ignore
-    BUILTIN git-check-mailmap
-    BUILTIN git-check-ref-format
-    BUILTIN git-checkout-index
-    BUILTIN git-checkout
-    BUILTIN git-clean
-    BUILTIN git-clone
-    BUILTIN git-column
-    BUILTIN git-commit-tree
-    BUILTIN git-commit
-    BUILTIN git-config
-    BUILTIN git-count-objects
-    BUILTIN git-credential
-    BUILTIN git-describe
-    BUILTIN git-diff-files
-    BUILTIN git-diff-index
-    BUILTIN git-diff-tree
-    BUILTIN git-diff
-    BUILTIN git-fast-export
-    BUILTIN git-fetch-pack
-    BUILTIN git-fetch
-    BUILTIN git-fmt-merge-msg
-    BUILTIN git-for-each-ref
-    BUILTIN git-fsck
-    BUILTIN git-gc
-    BUILTIN git-get-tar-commit-id
-    BUILTIN git-grep
-    BUILTIN git-hash-object
-    BUILTIN git-help
-    BUILTIN git-index-pack
-    BUILTIN git-init-db
-    BUILTIN git-interpret-trailers
-    BUILTIN git-log
-    BUILTIN git-ls-files
-    BUILTIN git-ls-remote
-    BUILTIN git-ls-tree
-    BUILTIN git-mailinfo
-    BUILTIN git-mailsplit
-    BUILTIN git-merge
-    BUILTIN git-merge-base
-    BUILTIN git-merge-file
-    BUILTIN git-merge-index
-    BUILTIN git-merge-ours
-    BUILTIN git-merge-recursive
-    BUILTIN git-merge-tree
-    BUILTIN git-mktag
-    BUILTIN git-mktree
-    BUILTIN git-mv
-    BUILTIN git-name-rev
-    BUILTIN git-notes
-    BUILTIN git-pack-objects
-    BUILTIN git-pack-redundant
-    BUILTIN git-pack-refs
-    BUILTIN git-patch-id
-    BUILTIN git-prune-packed
-    BUILTIN git-prune
-    BUILTIN git-pull
-    BUILTIN git-push
-    BUILTIN git-read-tree
-    BUILTIN git-receive-pack
-    BUILTIN git-reflog
-    BUILTIN git-remote
-    BUILTIN git-remote-ext
-    BUILTIN git-remote-fd
-    BUILTIN git-repack
-    BUILTIN git-replace
-    BUILTIN git-rerere
-    BUILTIN git-reset
-    BUILTIN git-rev-list
-    BUILTIN git-rev-parse
-    BUILTIN git-revert
-    BUILTIN git-rm
-    BUILTIN git-send-pack
-    BUILTIN git-shortlog
-    BUILTIN git-show-branch
-    BUILTIN git-show-ref
-    BUILTIN git-stripspace
-    BUILTIN git-symbolic-ref
-    BUILTIN git-tag
-    BUILTIN git-unpack-file
-    BUILTIN git-unpack-objects
-    BUILTIN git-update-index
-    BUILTIN git-update-ref
-    BUILTIN git-update-server-info
-    BUILTIN git-upload-archive
-    BUILTIN git-var
-    BUILTIN git-verify-commit
-    BUILTIN git-verify-pack
-    BUILTIN git-verify-tag
-    BUILTIN git-worktree
-    BUILTIN git-write-tree
-    BUILTIN git-cherry
-    BUILTIN git-cherry-pick
-    BUILTIN git-format-patch
-    BUILTIN git-fsck-objects
-    BUILTIN git-init
-    BUILTIN git-merge-subtree
-    BUILTIN git-show
-    BUILTIN git-stage
-    BUILTIN git-status
-    BUILTIN git-whatchanged
-    SUBDIR git-gui
-    SUBDIR gitk-git
-    SUBDIR perl
-    SUBDIR templates
-    LINK test-chmtime
-    LINK test-ctype
-    LINK test-config
-    LINK test-date
-    LINK test-delta
-    LINK test-dump-cache-tree
-    LINK test-dump-split-index
-    LINK test-dump-untracked-cache
-    LINK test-genrandom
-    LINK test-hashmap
-    LINK test-index-version
-    LINK test-line-buffer
-    LINK test-match-trees
-    LINK test-mergesort
-    LINK test-mktemp
-    LINK test-parse-options
-    LINK test-path-utils
-    LINK test-prio-queue
-    LINK test-read-cache
-    LINK test-regex
-    LINK test-revision-walking
-    LINK test-run-command
-    LINK test-scrap-cache-tree
-    LINK test-sha1
-    LINK test-sha1-array
-    LINK test-sigchain
-    LINK test-string-list
-    LINK test-submodule-config
-    LINK test-subprocess
-    LINK test-svn-fe
-    LINK test-urlmatch-normalization
-    LINK test-wildmatch
-/usr/gnu/bin/make -C t/ all
-make[2]: Entering directory `$(@D)/t'
-rm -f -r 'test-results'
-/usr/gnu/bin/make aggregate-results-and-cleanup
-make[3]: Entering directory `$(@D)/t'
 *** t0000-basic.sh ***
 ok 1 - .git/objects should be empty after git init in an empty repo
 ok 2 - .git/objects should have 3 subdirectories
@@ -283,7 +98,7 @@
 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 rejects insanely long --template
+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
@@ -313,9 +128,13 @@
 ok 8 - check write-tree
 ok 9 - check commit-tree
 ok 10 - check rev-list
-ok 11 - setup_git_dir twice in subdir
-# passed all 11 test(s)
-1..11
+not ok 11 - setup_git_dir twice in subdir # TODO known breakage
+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)
+1..14
 *** t0003-attributes.sh ***
 ok 1 - setup
 ok 2 - command line checks
@@ -1049,152 +868,160 @@
 # passed all 11 test(s)
 1..11
 *** t0060-path-utils.sh ***
-ok 1 - normalize path:  => 
-ok 2 - normalize path: . => 
-ok 3 - normalize path: ./ => 
-ok 4 - normalize path: ./. => 
-ok 5 - normalize path: ./.. => ++failed++
-ok 6 - normalize path: ../. => ++failed++
-ok 7 - normalize path: ./../.// => ++failed++
-ok 8 - normalize path: dir/.. => 
-ok 9 - normalize path: dir/sub/../.. => 
-ok 10 - normalize path: dir/sub/../../.. => ++failed++
-ok 11 - normalize path: dir => dir
-ok 12 - normalize path: dir// => dir/
-ok 13 - normalize path: ./dir => dir
-ok 14 - normalize path: dir/. => dir/
-ok 15 - normalize path: dir///./ => dir/
-ok 16 - normalize path: dir//sub/.. => dir/
-ok 17 - normalize path: dir/sub/../ => dir/
-ok 18 - normalize path: dir/sub/../. => dir/
-ok 19 - normalize path: dir/s1/../s2/ => dir/s2/
-ok 20 - normalize path: d1/s1///s2/..//../s3/ => d1/s3/
-ok 21 - normalize path: d1/s1//../s2/../../d2 => d2
-ok 22 - normalize path: d1/.../d2 => d1/.../d2
-ok 23 - normalize path: d1/..././../d2 => d1/d2
-ok 24 - normalize path: / => /
-ok 25 - normalize path: // => /
-ok 26 - normalize path: /// => /
-ok 27 - normalize path: /. => /
-ok 28 - normalize path: /./ => /
-ok 29 - normalize path: /./.. => ++failed++
-ok 30 - normalize path: /../. => ++failed++
-ok 31 - normalize path: /./../.// => ++failed++
-ok 32 - normalize path: /dir/.. => /
-ok 33 - normalize path: /dir/sub/../.. => /
-ok 34 - normalize path: /dir/sub/../../.. => ++failed++
-ok 35 - normalize path: /dir => /dir
-ok 36 - normalize path: /dir// => /dir/
-ok 37 - normalize path: /./dir => /dir
-ok 38 - normalize path: /dir/. => /dir/
-ok 39 - normalize path: /dir///./ => /dir/
-ok 40 - normalize path: /dir//sub/.. => /dir/
-ok 41 - normalize path: /dir/sub/../ => /dir/
-ok 42 - normalize path: //dir/sub/../. => /dir/
-ok 43 - normalize path: /dir/s1/../s2/ => /dir/s2/
-ok 44 - normalize path: /d1/s1///s2/..//../s3/ => /d1/s3/
-ok 45 - normalize path: /d1/s1//../s2/../../d2 => /d2
-ok 46 - normalize path: /d1/.../d2 => /d1/.../d2
-ok 47 - normalize path: /d1/..././../d2 => /d1/d2
-ok 48 - longest ancestor: / / => -1
-ok 49 - longest ancestor: /foo / => 0
-ok 50 - longest ancestor: /foo /fo => -1
-ok 51 - longest ancestor: /foo /foo => -1
-ok 52 - longest ancestor: /foo /bar => -1
-ok 53 - longest ancestor: /foo /foo/bar => -1
-ok 54 - longest ancestor: /foo /foo:/bar => -1
-ok 55 - longest ancestor: /foo /:/foo:/bar => 0
-ok 56 - longest ancestor: /foo /foo:/:/bar => 0
-ok 57 - longest ancestor: /foo /:/bar:/foo => 0
-ok 58 - longest ancestor: /foo/bar / => 0
-ok 59 - longest ancestor: /foo/bar /fo => -1
-ok 60 - longest ancestor: /foo/bar /foo => 4
-ok 61 - longest ancestor: /foo/bar /foo/ba => -1
-ok 62 - longest ancestor: /foo/bar /:/fo => 0
-ok 63 - longest ancestor: /foo/bar /foo:/foo/ba => 4
-ok 64 - longest ancestor: /foo/bar /bar => -1
-ok 65 - longest ancestor: /foo/bar /fo => -1
-ok 66 - longest ancestor: /foo/bar /foo:/bar => 4
-ok 67 - longest ancestor: /foo/bar /:/foo:/bar => 4
-ok 68 - longest ancestor: /foo/bar /foo:/:/bar => 4
-ok 69 - longest ancestor: /foo/bar /:/bar:/fo => 0
-ok 70 - longest ancestor: /foo/bar /:/bar => 0
-ok 71 - longest ancestor: /foo/bar /foo => 4
-ok 72 - longest ancestor: /foo/bar /foo:/bar => 4
-ok 73 - longest ancestor: /foo/bar /bar => -1
-ok 74 - strip_path_suffix
-ok 75 - absolute path rejects the empty string
-ok 76 - real path rejects the empty string
-ok 77 - real path works on absolute paths 1
-ok 78 - real path works on absolute paths 2
-ok 79 - real path removes extra leading slashes
-ok 80 - real path removes other extra slashes
-ok 81 - real path works on symlinks
-ok 82 - prefix_path works with absolute paths to work tree symlinks
-ok 83 - prefix_path works with only absolute path to work tree
-ok 84 - prefix_path rejects absolute path to dir with same beginning as work tree
-ok 85 - prefix_path works with absolute path to a symlink to work tree having  same beginning as work tree
-ok 86 - relative path: /foo/a/b/c/ /foo/a/b/ => c/
-ok 87 - relative path: /foo/a/b/c/ /foo/a/b => c/
-ok 88 - relative path: /foo/a//b//c/ ///foo/a/b// => c/
-ok 89 - relative path: /foo/a/b /foo/a/b => ./
-ok 90 - relative path: /foo/a/b/ /foo/a/b => ./
-ok 91 - relative path: /foo/a /foo/a/b => ../
-ok 92 - relative path: / /foo/a/b/ => ../../../
-ok 93 - relative path: /foo/a/c /foo/a/b/ => ../c
-ok 94 - relative path: /foo/a/c /foo/a/b => ../c
-ok 95 - relative path: /foo/x/y /foo/a/b/ => ../../x/y
-ok 96 - relative path: /foo/a/b <empty> => /foo/a/b
-ok 97 - relative path: /foo/a/b <null> => /foo/a/b
-ok 98 - relative path: foo/a/b/c/ foo/a/b/ => c/
-ok 99 - relative path: foo/a/b/c/ foo/a/b => c/
-ok 100 - relative path: foo/a/b//c foo/a//b => c
-ok 101 - relative path: foo/a/b/ foo/a/b/ => ./
-ok 102 - relative path: foo/a/b/ foo/a/b => ./
-ok 103 - relative path: foo/a foo/a/b => ../
-ok 104 - relative path: foo/x/y foo/a/b => ../../x/y
-ok 105 - relative path: foo/a/c foo/a/b => ../c
-ok 106 - relative path: foo/a/b /foo/x/y => foo/a/b
-ok 107 - relative path: /foo/a/b foo/x/y => /foo/a/b
-ok 108 # skip relative path: d:/a/b D:/a/c => ../b (missing MINGW)
-ok 109 # skip relative path: C:/a/b D:/a/c => C:/a/b (missing MINGW)
-ok 110 - relative path: foo/a/b <empty> => foo/a/b
-ok 111 - relative path: foo/a/b <null> => foo/a/b
-ok 112 - relative path: <empty> /foo/a/b => ./
-ok 113 - relative path: <empty> <empty> => ./
-ok 114 - relative path: <empty> <null> => ./
-ok 115 - relative path: <null> <empty> => ./
-ok 116 - relative path: <null> <null> => ./
-ok 117 - relative path: <null> /foo/a/b => ./
-ok 118 - git-path A=B info/grafts => .git/info/grafts
-ok 119 - git-path GIT_GRAFT_FILE=foo info/grafts => foo
-ok 120 - git-path GIT_GRAFT_FILE=foo info/////grafts => foo
-ok 121 - git-path GIT_INDEX_FILE=foo index => foo
-ok 122 - git-path GIT_INDEX_FILE=foo index/foo => .git/index/foo
-ok 123 - git-path GIT_INDEX_FILE=foo index2 => .git/index2
-ok 124 - setup fake objects directory foo
-ok 125 - git-path GIT_OBJECT_DIRECTORY=foo objects => foo
-ok 126 - git-path GIT_OBJECT_DIRECTORY=foo objects/foo => foo/foo
-ok 127 - git-path GIT_OBJECT_DIRECTORY=foo objects2 => .git/objects2
-ok 128 - setup common repository
-ok 129 - git-path GIT_COMMON_DIR=bar index => .git/index
-ok 130 - git-path GIT_COMMON_DIR=bar HEAD => .git/HEAD
-ok 131 - git-path GIT_COMMON_DIR=bar logs/HEAD => .git/logs/HEAD
-ok 132 - git-path GIT_COMMON_DIR=bar objects => bar/objects
-ok 133 - git-path GIT_COMMON_DIR=bar objects/bar => bar/objects/bar
-ok 134 - git-path GIT_COMMON_DIR=bar info/exclude => bar/info/exclude
-ok 135 - git-path GIT_COMMON_DIR=bar info/grafts => bar/info/grafts
-ok 136 - git-path GIT_COMMON_DIR=bar info/sparse-checkout => .git/info/sparse-checkout
-ok 137 - git-path GIT_COMMON_DIR=bar remotes/bar => bar/remotes/bar
-ok 138 - git-path GIT_COMMON_DIR=bar branches/bar => bar/branches/bar
-ok 139 - git-path GIT_COMMON_DIR=bar logs/refs/heads/master => bar/logs/refs/heads/master
-ok 140 - git-path GIT_COMMON_DIR=bar refs/heads/master => bar/refs/heads/master
-ok 141 - git-path GIT_COMMON_DIR=bar hooks/me => bar/hooks/me
-ok 142 - git-path GIT_COMMON_DIR=bar config => bar/config
-ok 143 - git-path GIT_COMMON_DIR=bar packed-refs => bar/packed-refs
-ok 144 - git-path GIT_COMMON_DIR=bar shallow => bar/shallow
-# passed all 144 test(s)
-1..144
+ok 1 - basename
+ok 2 - dirname
+ok 3 - normalize path:  => 
+ok 4 - normalize path: . => 
+ok 5 - normalize path: ./ => 
+ok 6 - normalize path: ./. => 
+ok 7 - normalize path: ./.. => ++failed++
+ok 8 - normalize path: ../. => ++failed++
+ok 9 - normalize path: ./../.// => ++failed++
+ok 10 - normalize path: dir/.. => 
+ok 11 - normalize path: dir/sub/../.. => 
+ok 12 - normalize path: dir/sub/../../.. => ++failed++
+ok 13 - normalize path: dir => dir
+ok 14 - normalize path: dir// => dir/
+ok 15 - normalize path: ./dir => dir
+ok 16 - normalize path: dir/. => dir/
+ok 17 - normalize path: dir///./ => dir/
+ok 18 - normalize path: dir//sub/.. => dir/
+ok 19 - normalize path: dir/sub/../ => dir/
+ok 20 - normalize path: dir/sub/../. => dir/
+ok 21 - normalize path: dir/s1/../s2/ => dir/s2/
+ok 22 - normalize path: d1/s1///s2/..//../s3/ => d1/s3/
+ok 23 - normalize path: d1/s1//../s2/../../d2 => d2
+ok 24 - normalize path: d1/.../d2 => d1/.../d2
+ok 25 - normalize path: d1/..././../d2 => d1/d2
+ok 26 - normalize path: / => /
+ok 27 - normalize path: // => /
+ok 28 - normalize path: /// => /
+ok 29 - normalize path: /. => /
+ok 30 - normalize path: /./ => /
+ok 31 - normalize path: /./.. => ++failed++
+ok 32 - normalize path: /../. => ++failed++
+ok 33 - normalize path: /./../.// => ++failed++
+ok 34 - normalize path: /dir/.. => /
+ok 35 - normalize path: /dir/sub/../.. => /
+ok 36 - normalize path: /dir/sub/../../.. => ++failed++
+ok 37 - normalize path: /dir => /dir
+ok 38 - normalize path: /dir// => /dir/
+ok 39 - normalize path: /./dir => /dir
+ok 40 - normalize path: /dir/. => /dir/
+ok 41 - normalize path: /dir///./ => /dir/
+ok 42 - normalize path: /dir//sub/.. => /dir/
+ok 43 - normalize path: /dir/sub/../ => /dir/
+ok 44 - normalize path: //dir/sub/../. => /dir/
+ok 45 - normalize path: /dir/s1/../s2/ => /dir/s2/
+ok 46 - normalize path: /d1/s1///s2/..//../s3/ => /d1/s3/
+ok 47 - normalize path: /d1/s1//../s2/../../d2 => /d2
+ok 48 - normalize path: /d1/.../d2 => /d1/.../d2
+ok 49 - normalize path: /d1/..././../d2 => /d1/d2
+ok 50 - longest ancestor: / / => -1
+ok 51 - longest ancestor: /foo / => 0
+ok 52 - longest ancestor: /foo /fo => -1
+ok 53 - longest ancestor: /foo /foo => -1
+ok 54 - longest ancestor: /foo /bar => -1
+ok 55 - longest ancestor: /foo /foo/bar => -1
+ok 56 - longest ancestor: /foo /foo:/bar => -1
+ok 57 - longest ancestor: /foo /:/foo:/bar => 0
+ok 58 - longest ancestor: /foo /foo:/:/bar => 0
+ok 59 - longest ancestor: /foo /:/bar:/foo => 0
+ok 60 - longest ancestor: /foo/bar / => 0
+ok 61 - longest ancestor: /foo/bar /fo => -1
+ok 62 - longest ancestor: /foo/bar /foo => 4
+ok 63 - longest ancestor: /foo/bar /foo/ba => -1
+ok 64 - longest ancestor: /foo/bar /:/fo => 0
+ok 65 - longest ancestor: /foo/bar /foo:/foo/ba => 4
+ok 66 - longest ancestor: /foo/bar /bar => -1
+ok 67 - longest ancestor: /foo/bar /fo => -1
+ok 68 - longest ancestor: /foo/bar /foo:/bar => 4
+ok 69 - longest ancestor: /foo/bar /:/foo:/bar => 4
+ok 70 - longest ancestor: /foo/bar /foo:/:/bar => 4
+ok 71 - longest ancestor: /foo/bar /:/bar:/fo => 0
+ok 72 - longest ancestor: /foo/bar /:/bar => 0
+ok 73 - longest ancestor: /foo/bar /foo => 4
+ok 74 - longest ancestor: /foo/bar /foo:/bar => 4
+ok 75 - longest ancestor: /foo/bar /bar => -1
+ok 76 - strip_path_suffix
+ok 77 - absolute path rejects the empty string
+ok 78 - real path rejects the empty string
+ok 79 - real path works on absolute paths 1
+ok 80 - real path works on absolute paths 2
+ok 81 - real path removes extra leading slashes
+ok 82 - real path removes other extra slashes
+ok 83 - real path works on symlinks
+ok 84 - prefix_path works with absolute paths to work tree symlinks
+ok 85 - prefix_path works with only absolute path to work tree
+ok 86 - prefix_path rejects absolute path to dir with same beginning as work tree
+ok 87 - prefix_path works with absolute path to a symlink to work tree having  same beginning as work tree
+ok 88 - relative path: /foo/a/b/c/ /foo/a/b/ => c/
+ok 89 - relative path: /foo/a/b/c/ /foo/a/b => c/
+ok 90 - relative path: /foo/a//b//c/ ///foo/a/b// => c/
+ok 91 - relative path: /foo/a/b /foo/a/b => ./
+ok 92 - relative path: /foo/a/b/ /foo/a/b => ./
+ok 93 - relative path: /foo/a /foo/a/b => ../
+ok 94 - relative path: / /foo/a/b/ => ../../../
+ok 95 - relative path: /foo/a/c /foo/a/b/ => ../c
+ok 96 - relative path: /foo/a/c /foo/a/b => ../c
+ok 97 - relative path: /foo/x/y /foo/a/b/ => ../../x/y
+ok 98 - relative path: /foo/a/b <empty> => /foo/a/b
+ok 99 - relative path: /foo/a/b <null> => /foo/a/b
+ok 100 - relative path: foo/a/b/c/ foo/a/b/ => c/
+ok 101 - relative path: foo/a/b/c/ foo/a/b => c/
+ok 102 - relative path: foo/a/b//c foo/a//b => c
+ok 103 - relative path: foo/a/b/ foo/a/b/ => ./
+ok 104 - relative path: foo/a/b/ foo/a/b => ./
+ok 105 - relative path: foo/a foo/a/b => ../
+ok 106 - relative path: foo/x/y foo/a/b => ../../x/y
+ok 107 - relative path: foo/a/c foo/a/b => ../c
+ok 108 - relative path: foo/a/b /foo/x/y => foo/a/b
+ok 109 - relative path: /foo/a/b foo/x/y => /foo/a/b
+ok 110 # skip relative path: d:/a/b D:/a/c => ../b (missing MINGW)
+ok 111 # skip relative path: C:/a/b D:/a/c => C:/a/b (missing MINGW)
+ok 112 - relative path: foo/a/b <empty> => foo/a/b
+ok 113 - relative path: foo/a/b <null> => foo/a/b
+ok 114 - relative path: <empty> /foo/a/b => ./
+ok 115 - relative path: <empty> <empty> => ./
+ok 116 - relative path: <empty> <null> => ./
+ok 117 - relative path: <null> <empty> => ./
+ok 118 - relative path: <null> <null> => ./
+ok 119 - relative path: <null> /foo/a/b => ./
+ok 120 - git-path A=B info/grafts => .git/info/grafts
+ok 121 - git-path GIT_GRAFT_FILE=foo info/grafts => foo
+ok 122 - git-path GIT_GRAFT_FILE=foo info/////grafts => foo
+ok 123 - git-path GIT_INDEX_FILE=foo index => foo
+ok 124 - git-path GIT_INDEX_FILE=foo index/foo => .git/index/foo
+ok 125 - git-path GIT_INDEX_FILE=foo index2 => .git/index2
+ok 126 - setup fake objects directory foo
+ok 127 - git-path GIT_OBJECT_DIRECTORY=foo objects => foo
+ok 128 - git-path GIT_OBJECT_DIRECTORY=foo objects/foo => foo/foo
+ok 129 - git-path GIT_OBJECT_DIRECTORY=foo objects2 => .git/objects2
+ok 130 - setup common repository
+ok 131 - git-path GIT_COMMON_DIR=bar index => .git/index
+ok 132 - git-path GIT_COMMON_DIR=bar HEAD => .git/HEAD
+ok 133 - git-path GIT_COMMON_DIR=bar logs/HEAD => .git/logs/HEAD
+ok 134 - git-path GIT_COMMON_DIR=bar logs/refs/bisect/foo => .git/logs/refs/bisect/foo
+ok 135 - git-path GIT_COMMON_DIR=bar logs/refs/bisec/foo => bar/logs/refs/bisec/foo
+ok 136 - git-path GIT_COMMON_DIR=bar logs/refs/bisec => bar/logs/refs/bisec
+ok 137 - git-path GIT_COMMON_DIR=bar logs/refs/bisectfoo => bar/logs/refs/bisectfoo
+ok 138 - git-path GIT_COMMON_DIR=bar objects => bar/objects
+ok 139 - git-path GIT_COMMON_DIR=bar objects/bar => bar/objects/bar
+ok 140 - git-path GIT_COMMON_DIR=bar info/exclude => bar/info/exclude
+ok 141 - git-path GIT_COMMON_DIR=bar info/grafts => bar/info/grafts
+ok 142 - git-path GIT_COMMON_DIR=bar info/sparse-checkout => .git/info/sparse-checkout
+ok 143 - git-path GIT_COMMON_DIR=bar info//sparse-checkout => .git/info//sparse-checkout
+ok 144 - git-path GIT_COMMON_DIR=bar remotes/bar => bar/remotes/bar
+ok 145 - git-path GIT_COMMON_DIR=bar branches/bar => bar/branches/bar
+ok 146 - git-path GIT_COMMON_DIR=bar logs/refs/heads/master => bar/logs/refs/heads/master
+ok 147 - git-path GIT_COMMON_DIR=bar refs/heads/master => bar/refs/heads/master
+ok 148 - git-path GIT_COMMON_DIR=bar refs/bisect/foo => .git/refs/bisect/foo
+ok 149 - git-path GIT_COMMON_DIR=bar hooks/me => bar/hooks/me
+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
 *** t0061-run-command.sh ***
 ok 1 - start_command reports ENOENT
 ok 2 - run_command can run a command
@@ -1385,7 +1212,6 @@
 ok 8 - gettext.c: git init UTF-8 -> ISO-8859-1
 # failed 2 among 8 test(s)
 1..8
-make[3]: [t0204-gettext-reencode-sanity.sh] Error 1 (ignored)
 *** t0205-gettext-poison.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
@@ -2191,8 +2017,18 @@
 ok 3 - gitdir selection on unsupported repo
 ok 4 - gitdir not required mode
 ok 5 - gitdir required mode
-# passed all 5 test(s)
-1..5
+ok 6 - allow version=0 
+ok 7 - allow version=1 
+ok 8 - allow version=1 noop
+ok 9 - abort version=1 no-such-extension
+ok 10 - allow version=0 no-such-extension
+ok 11 - precious-objects allowed
+ok 12 - precious-objects blocks destructive repack
+ok 13 - other repacks are OK
+ok 14 - precious-objects blocks prune
+ok 15 - gc runs without complaint
+# passed all 15 test(s)
+1..15
 *** t1303-wacky-config.sh ***
 ok 1 - modify same key
 ok 2 - add key in same section
@@ -2301,8 +2137,9 @@
 ok 24 - proper error on error in default config files
 ok 25 - proper error on error in custom config files
 ok 26 - check line errors for malformed values
-# passed all 26 test(s)
-1..26
+ok 27 - error on modifying repo config without repo
+# passed all 27 test(s)
+1..27
 *** t1400-update-ref.sh ***
 ok 1 - setup
 ok 2 - create refs/heads/master
@@ -2452,8 +2289,9 @@
 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
-# passed all 148 test(s)
-1..148
+ok 149 - handle per-worktree refs in refs/bisect
+# passed all 149 test(s)
+1..149
 *** t1401-symbolic-ref.sh ***
 ok 1 - symbolic-ref writes HEAD
 ok 2 - symbolic-ref reads HEAD
@@ -2463,8 +2301,13 @@
 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
-# passed all 8 test(s)
-1..8
+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
 *** t1402-check-ref-format.sh ***
 ok 1 - ref name '' is invalid
 ok 2 - ref name '/' is invalid
@@ -2604,8 +2447,11 @@
 ok 14 - stale dirs do not cause d/f conflicts (reflogs on)
 ok 15 - stale dirs do not cause d/f conflicts (reflogs off)
 ok 16 - parsing reverse reflogs at BUFSIZ boundaries
-# passed all 16 test(s)
-1..16
+ok 17 - no segfaults for reflog containing non-commit sha1s
+not ok 18 - reflog with non-commit entries displays all entries # TODO known breakage
+# still have 1 known breakage(s)
+# passed all remaining 17 test(s)
+1..18
 *** t1411-reflog-show.sh ***
 ok 1 - setup
 ok 2 - log -g shows reflog headers
@@ -2652,7 +2498,7 @@
 ok 1 - setup
 ok 2 - fast-import: fail on invalid branch name ".badbranchname"
 ok 3 - fast-import: fail on invalid branch name "bad[branch]name"
-ok 4 - git branch shows badly named ref
+ok 4 - git branch shows badly named ref as warning
 ok 5 - branch -d can delete badly named ref
 ok 6 - branch -D can delete badly named ref
 ok 7 - branch -D cannot delete non-ref in .git dir
@@ -2684,54 +2530,58 @@
 ok 4 - setup: helpers for corruption tests
 ok 5 - object with bad sha1
 ok 6 - branch pointing to non-commit
-ok 7 - email without @ is okay
-ok 8 - email with embedded > is not okay
-ok 9 - missing < email delimiter is reported nicely
-ok 10 - missing email is reported nicely
-ok 11 - > in name is reported
-ok 12 - integer overflow in timestamps is reported
-ok 13 - malformatted tree object
-ok 14 - tag pointing to nonexistent
-ok 15 - tag pointing to something else than its type
-ok 16 - tag with incorrect tag name & missing tagger
-ok 17 - tag with bad tagger
-ok 18 - cleaned up
-ok 19 - rev-list --verify-objects
-ok 20 - rev-list --verify-objects with bad sha1
-ok 21 - force fsck to ignore double author
-ok 22 - fsck notices blob entry pointing to null sha1
-ok 23 - fsck notices submodule entry pointing to null sha1
-ok 24 - fsck notices . as blob
-ok 25 - fsck notices . as tree
-ok 26 - fsck notices .. as blob
-ok 27 - fsck notices .. as tree
-ok 28 - fsck notices .git as blob
-ok 29 - fsck notices .git as tree
-ok 30 - fsck notices .GIT as blob
-ok 31 - fsck notices .GIT as tree
-ok 32 - fsck notices .gI{u200c}T as blob
-ok 33 - fsck notices .gI{u200c}T as tree
-ok 34 - fsck notices .Git as blob
-ok 35 - fsck notices .Git as tree
-ok 36 - fsck notices git~1 as blob
-ok 37 - fsck notices git~1 as tree
-ok 38 - fsck notices .git. as blob
-ok 39 - fsck notices .git. as tree
-ok 40 - fsck notices .\.GIT\foobar as blob
-ok 41 - fsck notices .\.GIT\foobar as tree
-ok 42 - fsck notices .git\foobar as blob
-ok 43 - fsck notices .git\foobar as tree
-ok 44 - fsck allows .Ňit
-ok 45 - fsck notices missing blob
-ok 46 - fsck notices missing subtree
-ok 47 - fsck notices missing root tree
-ok 48 - fsck notices missing parent
-ok 49 - fsck notices missing tagged object
-ok 50 - fsck notices ref pointing to missing commit
-ok 51 - fsck notices ref pointing to missing tag
-ok 52 - fsck --connectivity-only
-# passed all 52 test(s)
-1..52
+ok 7 - HEAD link pointing at a funny object
+ok 8 - HEAD link pointing at a funny place
+ok 9 - email without @ is okay
+ok 10 - email with embedded > is not okay
+ok 11 - missing < email delimiter is reported nicely
+ok 12 - missing email is reported nicely
+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
 *** t1500-rev-parse.sh ***
 ok 1 - toplevel: is-bare-repository
 ok 2 - toplevel: is-inside-git-dir
@@ -2785,7 +2635,7 @@
 ok 50 - GIT_DIR=../repo.git, core.bare undefined: prefix
 # passed all 50 test(s)
 1..50
-*** t1501-worktree.sh ***
+*** t1501-work-tree.sh ***
 ok 1 - setup
 ok 2 - setup: helper for testing rev-parse
 ok 3 - setup: core.worktree = relative path
@@ -3011,7 +2861,7 @@
 ok 33 - @:fun@ny = content
 # passed all 33 test(s)
 1..33
-*** t1509-root-worktree.sh ***
+*** t1509-root-work-tree.sh ***
 1..0 # SKIP Test requiring writable / skipped. Read this test if you want to run it
 *** t1510-repo-setup.sh ***
 ok 1 - #0: nonbare repo, no explicit configuration
@@ -3470,10 +3320,8 @@
 ok 7 - checkout produces ambiguity warning
 ok 8 - checkout chooses branch over tag
 ok 9 - checkout reports switch to branch
-ok 10 - wildcard ambiguation, paths win
-ok 11 - wildcard ambiguation, refs lose
-# passed all 11 test(s)
-1..11
+# passed all 9 test(s)
+1..9
 *** t2020-checkout-detach.sh ***
 ok 1 - setup
 ok 2 - checkout branch does not detach
@@ -3564,9 +3412,10 @@
 ok 23 - "add" -b/-B mutually exclusive
 ok 24 - "add" -b/--detach mutually exclusive
 ok 25 - "add" -B/--detach mutually exclusive
-# passed all 25 test(s)
-1..25
-*** t2026-prune-linked-checkouts.sh ***
+ok 26 - local clone from linked checkout
+# passed all 26 test(s)
+1..26
+*** t2026-worktree-prune.sh ***
 ok 1 - initialize
 ok 2 - worktree prune on normal repo
 ok 3 - prune files inside $GIT_DIR/worktrees
@@ -3579,6 +3428,19 @@
 ok 10 - not prune proper checkouts
 # passed all 10 test(s)
 1..10
+*** t2027-worktree-list.sh ***
+ok 1 - setup
+ok 2 - rev-parse --git-common-dir on main worktree
+ok 3 - "list" all worktrees from main
+ok 4 - "list" all worktrees from linked
+ok 5 - "list" all worktrees --porcelain
+ok 6 - bare repo setup
+ok 7 - "list" all worktrees from bare main
+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
 *** t2030-unresolve-info.sh ***
 ok 1 - setup
 ok 2 - add records switch clears
@@ -3774,9 +3636,10 @@
 ok 3 - ls-files --others
 ok 4 - ls-files --others --directory
 ok 5 - --no-empty-directory hides empty directory
-ok 6 - ls-files --others with symlinked submodule
-# passed all 6 test(s)
-1..6
+ok 6 - ls-files --others handles non-submodule .git
+ok 7 - ls-files --others with symlinked submodule
+# passed all 7 test(s)
+1..7
 *** t3001-ls-files-others-exclude.sh ***
 ok 1 - git ls-files --others with various exclude options.
 ok 2 - git ls-files --others with \r\n line endings.
@@ -3895,9 +3758,10 @@
 not ok 31 - merge-recursive simple w/submodule result # TODO known breakage
 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 30 test(s)
-1..33
+# passed all remaining 31 test(s)
+1..34
 *** t3031-merge-criscross.sh ***
 ok 1 - setup repo with criss-cross history
 ok 2 - recursive merge between F and G, causes segfault
@@ -4278,56 +4142,58 @@
 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 - use --set-upstream-to modify HEAD
-ok 60 - use --set-upstream-to modify a particular branch
-ok 61 - --unset-upstream should fail if given a non-existent branch
-ok 62 - test --unset-upstream on HEAD
-ok 63 - --unset-upstream should fail on multiple branches
-ok 64 - --unset-upstream should fail on detached HEAD
-ok 65 - test --unset-upstream on a particular branch
-ok 66 - --set-upstream shows message when creating a new branch that exists as remote-tracking
-ok 67 - --set-upstream with two args only shows the deprecation message
-ok 68 - --set-upstream with one arg only shows the deprecation message if the branch existed
-ok 69 - --set-upstream-to notices an error to set branch as own upstream
-ok 70 - git checkout -b g/h/i -l should create a branch and a log
-ok 71 - checkout -b makes reflog by default
-ok 72 - checkout -b does not make reflog when core.logAllRefUpdates = false
-ok 73 - checkout -b with -l makes reflog when core.logAllRefUpdates = false
-ok 74 - avoid ambiguous track
-ok 75 - autosetuprebase local on a tracked local branch
-ok 76 - autosetuprebase always on a tracked local branch
-ok 77 - autosetuprebase remote on a tracked local branch
-ok 78 - autosetuprebase never on a tracked local branch
-ok 79 - autosetuprebase local on a tracked remote branch
-ok 80 - autosetuprebase never on a tracked remote branch
-ok 81 - autosetuprebase remote on a tracked remote branch
-ok 82 - autosetuprebase always on a tracked remote branch
-ok 83 - autosetuprebase unconfigured on a tracked remote branch
-ok 84 - autosetuprebase unconfigured on a tracked local branch
-ok 85 - autosetuprebase unconfigured on untracked local branch
-ok 86 - autosetuprebase unconfigured on untracked remote branch
-ok 87 - autosetuprebase never on an untracked local branch
-ok 88 - autosetuprebase local on an untracked local branch
-ok 89 - autosetuprebase remote on an untracked local branch
-ok 90 - autosetuprebase always on an untracked local branch
-ok 91 - autosetuprebase never on an untracked remote branch
-ok 92 - autosetuprebase local on an untracked remote branch
-ok 93 - autosetuprebase remote on an untracked remote branch
-ok 94 - autosetuprebase always on an untracked remote branch
-ok 95 - autosetuprebase always on detached HEAD
-ok 96 - detect misconfigured autosetuprebase (bad value)
-ok 97 - detect misconfigured autosetuprebase (no value)
-ok 98 - attempt to delete a branch without base and unmerged to HEAD
-ok 99 - attempt to delete a branch merged to its base
-ok 100 - attempt to delete a branch merged to its base
-ok 101 - use set-upstream on the current branch
-ok 102 - use --edit-description
-ok 103 - detect typo in branch name when using --edit-description
-ok 104 - refuse --edit-description on unborn branch for now
-ok 105 - --merged catches invalid object names
-ok 106 - tracking with unexpected .fetch refspec
-# passed all 106 test(s)
-1..106
+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
 *** t3201-branch-contains.sh ***
 ok 1 - setup
 ok 2 - branch --contains=master
@@ -4363,11 +4229,15 @@
 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 moving
-ok 14 - git branch shows detached HEAD properly from tag
-ok 15 - git branch shows detached HEAD properly after moving from tag
-# passed all 15 test(s)
-1..15
+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
 *** t3210-pack-refs.sh ***
 ok 1 - enable reflogs
 ok 2 - prepare a trivial repository
@@ -4387,15 +4257,16 @@
 ok 16 - delete ref with dangling packed version
 ok 17 - delete ref while another dangling packed ref
 ok 18 - pack ref directly below refs/
-ok 19 - disable reflogs
-ok 20 - create packed foo/bar/baz branch
-ok 21 - notice d/f conflict with existing directory
-ok 22 - existing directory reports concrete ref
-ok 23 - notice d/f conflict with existing ref
-ok 24 - timeout if packed-refs.lock exists
-ok 25 - retry acquiring packed-refs.lock
-# passed all 25 test(s)
-1..25
+ok 19 - do not pack ref in refs/bisect
+ok 20 - disable reflogs
+ok 21 - create packed foo/bar/baz branch
+ok 22 - notice d/f conflict with existing directory
+ok 23 - existing directory reports concrete ref
+ok 24 - notice d/f conflict with existing ref
+ok 25 - timeout if packed-refs.lock exists
+ok 26 - retry acquiring packed-refs.lock
+# passed all 26 test(s)
+1..26
 *** t3211-peel-ref.sh ***
 ok 1 - create annotated tag in refs/tags
 ok 2 - create annotated tag outside of refs/tags
@@ -4535,36 +4406,37 @@
 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 (no overrides)
-ok 105 - git notes get-ref (core.notesRef)
-ok 106 - git notes get-ref (GIT_NOTES_REF)
-ok 107 - git notes get-ref (--ref)
-ok 108 - setup testing of empty notes
-ok 109 - 'git notes add' removes empty note
-ok 110 - 'git notes add --allow-empty' stores empty note
-ok 111 - 'git notes add -F /dev/null' removes empty note
-ok 112 - 'git notes add -F /dev/null --allow-empty' stores empty note
-ok 113 - 'git notes add -m ""' removes empty note
-ok 114 - 'git notes add -m "" --allow-empty' stores empty note
-ok 115 - 'git notes add -c "$empty_blob"' removes empty note
-ok 116 - 'git notes add -c "$empty_blob" --allow-empty' stores empty note
-ok 117 - 'git notes add -C "$empty_blob"' removes empty note
-ok 118 - 'git notes add -C "$empty_blob" --allow-empty' stores empty note
-ok 119 - 'git notes append' removes empty note
-ok 120 - 'git notes append --allow-empty' stores empty note
-ok 121 - 'git notes append -F /dev/null' removes empty note
-ok 122 - 'git notes append -F /dev/null --allow-empty' stores empty note
-ok 123 - 'git notes append -m ""' removes empty note
-ok 124 - 'git notes append -m "" --allow-empty' stores empty note
-ok 125 - 'git notes append -c "$empty_blob"' removes empty note
-ok 126 - 'git notes append -c "$empty_blob" --allow-empty' stores empty note
-ok 127 - 'git notes append -C "$empty_blob"' removes empty note
-ok 128 - 'git notes append -C "$empty_blob" --allow-empty' stores empty note
-ok 129 - 'git notes edit' removes empty note
-ok 130 - 'git notes edit --allow-empty' stores empty note
-ok 131 - empty notes are displayed by git log
-# passed all 131 test(s)
-1..131
+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
 *** t3302-notes-index-expensive.sh ***
 ok 1 - setup 10
 ok 2 - notes work
@@ -4893,24 +4765,27 @@
 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 - rebase -i error on commits with \ in message
-ok 76 - short SHA-1 setup
-ok 77 - short SHA-1 collide
-ok 78 - respect core.abbrev
-ok 79 - todo count
-ok 80 - rebase -i commits that overwrite untracked files (pick)
-ok 81 - rebase -i commits that overwrite untracked files (squash)
-ok 82 - rebase -i commits that overwrite untracked files (no ff)
-ok 83 - rebase --continue removes CHERRY_PICK_HEAD
-ok 84 - drop
-ok 85 - rebase -i respects rebase.missingCommitsCheck = ignore
-ok 86 - rebase -i respects rebase.missingCommitsCheck = warn
-ok 87 - rebase -i respects rebase.missingCommitsCheck = error
-ok 88 - static check of bad command
-ok 89 - static check of bad SHA-1
+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
 # still have 1 known breakage(s)
-# passed all remaining 88 test(s)
-1..89
+# passed all remaining 91 test(s)
+1..92
 *** t3405-rebase-malformed.sh ***
 ok 1 - setup
 ok 2 - rebase commit with multi-line subject
@@ -5090,30 +4965,33 @@
 ok 1 - setup
 ok 2 - rebase: fast-forward rebase
 ok 3 - rebase: noop rebase
-ok 4 - rebase: dirty worktree, non-conflicting rebase
-ok 5 - rebase: dirty index, non-conflicting rebase
-ok 6 - rebase: conflicting rebase
-ok 7 - rebase: --continue
-ok 8 - rebase: --skip
-ok 9 - rebase: --abort
-ok 10 - rebase: non-conflicting rebase, conflicting stash
-ok 11 - rebase --merge: dirty worktree, non-conflicting rebase
-ok 12 - rebase --merge: dirty index, non-conflicting rebase
-ok 13 - rebase --merge: conflicting rebase
-ok 14 - rebase --merge: --continue
-ok 15 - rebase --merge: --skip
-ok 16 - rebase --merge: --abort
-ok 17 - rebase --merge: non-conflicting rebase, conflicting stash
-ok 18 - rebase --interactive: dirty worktree, non-conflicting rebase
-ok 19 - rebase --interactive: dirty index, non-conflicting rebase
-ok 20 - rebase --interactive: conflicting rebase
-ok 21 - rebase --interactive: --continue
-ok 22 - rebase --interactive: --skip
-ok 23 - rebase --interactive: --abort
-ok 24 - rebase --interactive: non-conflicting rebase, conflicting stash
-ok 25 - abort rebase -i with --autostash
-# passed all 25 test(s)
-1..25
+ok 4 - rebase: dirty worktree, --no-autostash
+ok 5 - rebase: dirty worktree, non-conflicting rebase
+ok 6 - rebase: dirty index, non-conflicting rebase
+ok 7 - rebase: conflicting rebase
+ok 8 - rebase: --continue
+ok 9 - rebase: --skip
+ok 10 - rebase: --abort
+ok 11 - rebase: non-conflicting rebase, conflicting stash
+ok 12 - rebase --merge: dirty worktree, --no-autostash
+ok 13 - rebase --merge: dirty worktree, non-conflicting rebase
+ok 14 - rebase --merge: dirty index, non-conflicting rebase
+ok 15 - rebase --merge: conflicting rebase
+ok 16 - rebase --merge: --continue
+ok 17 - rebase --merge: --skip
+ok 18 - rebase --merge: --abort
+ok 19 - rebase --merge: non-conflicting rebase, conflicting stash
+ok 20 - rebase --interactive: dirty worktree, --no-autostash
+ok 21 - rebase --interactive: dirty worktree, non-conflicting rebase
+ok 22 - rebase --interactive: dirty index, non-conflicting rebase
+ok 23 - rebase --interactive: conflicting rebase
+ok 24 - rebase --interactive: --continue
+ok 25 - rebase --interactive: --skip
+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
 *** t3421-rebase-topology-linear.sh ***
 ok 1 - setup
 ok 2 - simple rebase 
@@ -6378,9 +6256,11 @@
 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
 # still have 5 known breakage(s)
-# passed all remaining 116 test(s)
-1..121
+# passed all remaining 118 test(s)
+1..123
 *** t4015-diff-whitespace.sh ***
 ok 1 - Ray Lehtiniemi's example
 ok 2 - another test, without options
@@ -7194,20 +7074,21 @@
 ok 2 - no order (=tree object order)
 ok 3 - missing orderfile
 ok 4 - unreadable orderfile
-ok 5 - orderfile using option (1)
-ok 6 - orderfile is fifo (1)
-ok 7 - orderfile using config (1)
-ok 8 - cancelling configured orderfile (1)
-ok 9 - orderfile using option (2)
-ok 10 - orderfile is fifo (2)
-ok 11 - orderfile using config (2)
-ok 12 - cancelling configured orderfile (2)
-ok 13 - setup for testing combine-diff order
-ok 14 - combine-diff: no order (=tree object order)
-ok 15 - combine-diff: orderfile using option (1)
-ok 16 - combine-diff: orderfile using option (2)
-# passed all 16 test(s)
-1..16
+ok 5 - orderfile using option from subdir with --output
+ok 6 - orderfile using option (1)
+ok 7 - orderfile is fifo (1)
+ok 8 - orderfile using config (1)
+ok 9 - cancelling configured orderfile (1)
+ok 10 - orderfile using option (2)
+ok 11 - orderfile is fifo (2)
+ok 12 - orderfile using config (2)
+ok 13 - cancelling configured orderfile (2)
+ok 14 - setup for testing combine-diff order
+ok 15 - combine-diff: no order (=tree object order)
+ok 16 - combine-diff: orderfile using option (1)
+ok 17 - combine-diff: orderfile using option (2)
+# passed all 17 test(s)
+1..17
 *** t4057-diff-combined-paths.sh ***
 ok 1 - trivial merge - combine-diff empty
 ok 2 - only one trully conflicting path
@@ -7887,7 +7768,6 @@
 # passed all 11 test(s)
 1..11
 *** t4202-log.sh ***
-You do not seem to have gpg installed
 ok 1 - setup
 ok 2 - pretty
 ok 3 - pretty (tformat)
@@ -7934,12 +7814,15 @@
 ok 44 - git log -c --follow
 ok 45 - log --graph with diff and stats
 ok 46 - dotdot is a parent directory
-ok 47 # skip log --graph --show-signature (missing GPG)
-ok 48 # skip log --graph --show-signature for merged tag (missing GPG)
+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
-# passed all 50 test(s)
-1..50
+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
 *** t4203-mailmap.sh ***
 ok 1 - setup
 ok 2 - check-mailmap no arguments
@@ -8592,10 +8475,11 @@
 ok 17 - prune --expire=never
 ok 18 - gc: prune old objects after local clone
 ok 19 - garbage report in count-objects -v
-ok 20 - prune .git/shallow
-ok 21 - prune: handle alternate object database
-# passed all 21 test(s)
-1..21
+ok 20 - clean pack garbage with gc
+ok 21 - prune .git/shallow
+ok 22 - prune: handle alternate object database
+# passed all 22 test(s)
+1..22
 *** t5305-include-tag.sh ***
 ok 1 - setup
 ok 2 - pack without --include-tag
@@ -8693,6 +8577,17 @@
 ok 12 - pack-refs does not drop broken refs during deletion
 # passed all 12 test(s)
 1..12
+*** t5313-pack-bounds-checks.sh ***
+ok 1 - set up base packfile and variables
+ok 2 - pack/index object count mismatch
+ok 3 - matched bogus object count
+ok 4 - bogus object offset (v1)
+ok 5 - bogus object offset (v2, no msb)
+ok 6 - bogus offset into v2 extended table
+ok 7 - bogus offset inside v2 extended table
+ok 8 - bogus OFS_DELTA in packfile
+# passed all 8 test(s)
+1..8
 *** t5400-send-pack.sh ***
 ok 1 - setup
 ok 2 - pack the source repository
@@ -9239,32 +9134,38 @@
 ok 51 - remote set-branches
 ok 52 - remote set-branches with --mirror
 ok 53 - new remote
-ok 54 - remote set-url bar
-ok 55 - remote set-url baz bar
-ok 56 - remote set-url zot bar
-ok 57 - remote set-url --push zot baz
-ok 58 - remote set-url --push zot
-ok 59 - remote set-url --push qux zot
-ok 60 - remote set-url --push foo qu+x
-ok 61 - remote set-url --push --add aaa
-ok 62 - remote set-url --push bar aaa
-ok 63 - remote set-url --push --delete bar
-ok 64 - remote set-url --push --delete foo
-ok 65 - remote set-url --add bbb
-ok 66 - remote set-url --delete .*
-ok 67 - remote set-url --delete bbb
-ok 68 - remote set-url --delete baz
-ok 69 - remote set-url --add ccc
-ok 70 - remote set-url --delete baz
-ok 71 - extra args: setup
-ok 72 - extra args: add nick url
-ok 73 - extra args: rename origin newname
-ok 74 - extra args: remove origin
-ok 75 - extra args: set-head origin master
-ok 76 - extra args: set-url origin newurl oldurl
-ok 77 - add remote matching the "insteadOf" URL
-# passed all 77 test(s)
-1..77
+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
 *** t5506-remote-groups.sh ***
 ok 1 - setup
 ok 2 - no group updates all
@@ -9276,13 +9177,27 @@
 ok 8 - updating remote name updates that remote
 # passed all 8 test(s)
 1..8
+*** t5507-remote-environment.sh ***
+ok 1 - set up "remote" push situation
+ok 2 - set up fake ssh
+ok 3 - confirm default push fails
+ok 4 - config does not travel over same-machine push
+ok 5 - config does not travel over ssh push
+# passed all 5 test(s)
+1..5
 *** t5509-fetch-push-namespaces.sh ***
 ok 1 - setup
 ok 2 - pushing into a repository using a ref namespace
 ok 3 - pulling from a repository using a ref namespace
 ok 4 - mirroring a repository using a ref namespace
-# passed all 4 test(s)
-1..4
+ok 5 - hide namespaced refs with transfer.hideRefs
+ok 6 - check that transfer.hideRefs does not match unstripped refs
+ok 7 - hide full refs with transfer.hideRefs
+ok 8 - try to update a hidden ref
+ok 9 - try to update a ref that is not hidden
+ok 10 - try to update a hidden full ref
+# passed all 10 test(s)
+1..10
 *** t5510-fetch.sh ***
 ok 1 - setup
 ok 2 - clone and setup child repos
@@ -9362,8 +9277,9 @@
 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
-# passed all 78 test(s)
-1..78
+ok 79 - fetching with auto-gc does not lock up
+# passed all 79 test(s)
+1..79
 *** t5511-refspec.sh ***
 ok 1 - push  (invalid)
 ok 2 - push :
@@ -9840,14 +9756,22 @@
 ok 3 - push if submodule has no remote
 ok 4 - push fails if submodule commit not on remote
 ok 5 - push succeeds after commit was pushed to remote
-ok 6 - push fails when commit on multiple branches if one branch has no remote
-ok 7 - push succeeds if submodule has no remote and is on the first superproject commit
-ok 8 - push unpushed submodules when not needed
-ok 9 - push unpushed submodules when not needed 2
-ok 10 - push unpushed submodules recursively
-ok 11 - push unpushable submodule recursively fails
-# passed all 11 test(s)
-1..11
+ok 6 - push succeeds if submodule commit not on remote but using on-demand on command line
+ok 7 - push succeeds if submodule commit not on remote but using on-demand from config
+ok 8 - push recurse-submodules on command line overrides config
+ok 9 - push recurse-submodules last one wins on command line
+ok 10 - push succeeds if submodule commit not on remote using on-demand from cmdline overriding config
+ok 11 - push succeeds if submodule commit disabling recursion from cmdline overriding config
+ok 12 - push succeeds if submodule commit disabling recursion from cmdline (alternative form) overriding config
+ok 13 - push fails if recurse submodules option passed as yes
+ok 14 - push fails when commit on multiple branches if one branch has no remote
+ok 15 - push succeeds if submodule has no remote and is on the first superproject commit
+ok 16 - push unpushed submodules when not needed
+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
 *** t5532-fetch-proxy.sh ***
 ok 1 - setup remote repo
 ok 2 - setup local repo
@@ -9871,14 +9795,13 @@
 # passed all 13 test(s)
 1..13
 *** t5534-push-signed.sh ***
-You do not seem to have gpg installed
 ok 1 - setup
 ok 2 - unsigned push does not send push certificate
 ok 3 - talking with a receiver without push certificate support
 ok 4 - push --signed fails with a receiver without push certificate support
-ok 5 # skip no certificate for a signed push with no update (missing GPG)
-ok 6 # skip signed push sends push certificate (missing GPG)
-ok 7 # skip fail without key and heed user.signingkey (missing GPG)
+ok 5 - no certificate for a signed push with no update
+ok 6 - signed push sends push certificate
+ok 7 - fail without key and heed user.signingkey
 # passed all 7 test(s)
 1..7
 *** t5535-fetch-push-symref.sh ***
@@ -9920,14 +9843,77 @@
 # passed all 6 test(s)
 1..6
 *** t5539-fetch-http-shallow.sh ***
-1..0 # SKIP no web server found at '/usr/sbin/apache2'
+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
 *** t5540-http-push-webdav.sh ***
-1..0 # SKIP no web server found at '/usr/sbin/apache2'
+ok 1 - setup remote repository
+ok 2 - create password-protected repository
+ok 3 - setup askpass helper
+ok 4 - clone remote repository
+ok 5 - push to remote repository with packed refs
+ok 6 - push already up-to-date
+ok 7 - push to remote repository with unpacked refs
+ok 8 - http-push fetches unpacked objects
+ok 9 - http-push fetches packed objects
+ok 10 - create and delete remote branch
+ok 11 - MKCOL sends directory names with trailing slashes
+ok 12 - PUT and MOVE sends object to URLs with SHA-1 hash suffix
+ok 13 - non-fast-forward push fails
+ok 14 - non-fast-forward push show ref status
+ok 15 - non-fast-forward push shows help message
+not ok 16 - force with lease aka cas # TODO known breakage
+ok 17 - push to password-protected repository (user in URL)
+not ok 18 - user was prompted only once for password # TODO known breakage
+not ok 19 - push to password-protected repository (no user in URL) # TODO known breakage
+# still have 3 known breakage(s)
+# passed all remaining 16 test(s)
+1..19
 *** t5541-http-push-smart.sh ***
-You do not seem to have gpg installed
-1..0 # SKIP no web server found at '/usr/sbin/apache2'
+ok 1 - setup remote repository
+ok 2 - setup askpass helper
+ok 3 - no empty path components
+ok 4 - clone remote repository
+ok 5 - push to remote repository (standard)
+ok 6 - push already up-to-date
+ok 7 - create and delete remote branch
+ok 8 - rejected update prints status
+ok 9 - used receive-pack service
+ok 10 - non-fast-forward push fails
+ok 11 - non-fast-forward push show ref status
+ok 12 - non-fast-forward push shows help message
+ok 13 - force with lease aka cas
+ok 14 - push fails for non-fast-forward refs unmatched by remote helper
+ok 15 - push fails for non-fast-forward refs unmatched by remote helper: remote output
+ok 16 - push fails for non-fast-forward refs unmatched by remote helper: our output
+ok 17 - push (chunked)
+ok 18 - push --all can push to empty repo
+ok 19 - push --mirror can push to empty repo
+ok 20 - push --all to repo with alternates
+ok 21 - push --mirror to repo with alternates
+ok 22 # skip push shows progress when stderr is a tty (missing TTY)
+ok 23 # skip push --quiet silences status and progress (missing TTY)
+ok 24 # skip push --no-progress silences progress but not status (missing TTY)
+ok 25 - push --progress shows progress to non-tty
+ok 26 - http push gives sane defaults to reflog
+ok 27 - http push respects GIT_COMMITTER_* in reflog
+ok 28 - push over smart http with auth
+ok 29 - push to auth-only-for-push repo
+ok 30 - create repo without http.receivepack set
+ok 31 - clone via half-auth-complete does not need password
+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
 *** t5542-push-http-shallow.sh ***
-1..0 # SKIP no web server found at '/usr/sbin/apache2'
+ok 1 - setup
+ok 2 - push to shallow repo via http
+ok 3 - push from shallow repo via http
+# passed all 3 test(s)
+1..3
 *** t5543-atomic-push.sh ***
 ok 1 - atomic push works for a single branch
 ok 2 - atomic push works for two branches
@@ -9940,9 +9926,66 @@
 # passed all 8 test(s)
 1..8
 *** t5550-http-fetch-dumb.sh ***
-1..0 # SKIP no web server found at '/usr/sbin/apache2'
+ok 1 - setup repository
+ok 2 - create http-accessible bare repository with loose objects
+ok 3 - clone http repository
+ok 4 - create password-protected repository
+ok 5 - setup askpass helper
+ok 6 - cloning password-protected repository can fail
+ok 7 - http auth can use user/pass in URL
+ok 8 - http auth can use just user in URL
+ok 9 - http auth can request both user and pass
+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
 *** t5551-http-fetch-smart.sh ***
-1..0 # SKIP no web server found at '/usr/sbin/apache2'
+ok 1 - setup repository
+ok 2 - create http-accessible bare repository
+ok 3 - setup askpass helper
+ok 4 - clone http repository
+ok 5 - fetch changes via http
+ok 6 - used upload-pack service
+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
 *** t5560-http-backend-noserver.sh ***
 ok 1 - setup repository
 ok 2 - direct refs/heads/master not found
@@ -9961,7 +10004,22 @@
 # passed all 14 test(s)
 1..14
 *** t5561-http-backend.sh ***
-1..0 # SKIP no web server found at '/usr/sbin/apache2'
+ok 1 - setup repository
+ok 2 - direct refs/heads/master not found
+ok 3 - static file is ok
+ok 4 - no export by default
+ok 5 - export if git-daemon-export-ok
+ok 6 - static file if http.getanyfile true is ok
+ok 7 - static file if http.getanyfile false fails
+ok 8 - http.uploadpack default enabled
+ok 9 - http.uploadpack true
+ok 10 - http.uploadpack false
+ok 11 - http.receivepack default disabled
+ok 12 - http.receivepack true
+ok 13 - http.receivepack false
+ok 14 - server request log matches test results
+# passed all 14 test(s)
+1..14
 *** t5570-git-daemon.sh ***
 ok 1 - setup repository
 ok 2 - create git-accessible bare repository
@@ -9993,8 +10051,10 @@
 ok 7 - push non-branches
 ok 8 - push delete
 ok 9 - push to URL
-# passed all 9 test(s)
-1..9
+ok 10 - set up many-ref tests
+ok 11 - sigpipe does not cause pre-push hook failure
+# passed all 11 test(s)
+1..11
 *** t5572-pull-submodule.sh ***
 ok 1 - git_pull: added submodule creates empty directory
 ok 2 - git_pull: added submodule leaves existing empty directory alone
@@ -10235,8 +10295,10 @@
 ok 25 - clone using repo with gitfile as a reference
 ok 26 - clone using repo pointed at by gitfile as reference
 ok 27 - clone and dissociate from reference
-# passed all 27 test(s)
-1..27
+ok 28 - clone, dissociate from partial reference and repack
+ok 29 - clone, dissociate from alternates
+# passed all 29 test(s)
+1..29
 *** t5701-clone-local.sh ***
 ok 1 - preparing origin repository
 ok 2 - local clone without .git suffix
@@ -10348,7 +10410,6 @@
 # passed all 11 test(s)
 1..11
 *** t5801-remote-helpers.sh ***
-You do not seem to have gpg installed
 ok 1 - setup repository
 ok 2 - cloning from local repo
 ok 3 - create new commit on remote
@@ -10369,8 +10430,8 @@
 not ok 18 - pushing without marks # TODO known breakage
 ok 19 - push all with existing object
 ok 20 - push ref with existing object
-ok 21 # skip push signed tag (missing GPG)
-ok 22 # skip push signed tag with signed-tags capability (missing GPG)
+ok 21 - push signed tag
+ok 22 - push signed tag with signed-tags capability
 ok 23 - push update refs
 ok 24 - push update refs disabled by no-private-update
 ok 25 - push update refs failure
@@ -10388,8 +10449,11 @@
 ok 3 - update following tag
 ok 4 - update backfilled tag
 ok 5 - update backfilled tag without primary transfer
-# passed all 5 test(s)
-1..5
+ok 6 - set up fake git-daemon
+ok 7 - ext command can connect to git daemon (no vhost)
+ok 8 - ext command can connect to git daemon (vhost)
+# passed all 8 test(s)
+1..8
 *** t5810-proto-disable-local.sh ***
 ok 1 - setup repository to clone
 ok 2 - clone file:// (enabled)
@@ -10417,7 +10481,17 @@
 # passed all 7 test(s)
 1..7
 *** t5812-proto-disable-http.sh ***
-1..0 # SKIP no web server found at '/usr/sbin/apache2'
+ok 1 - create git-accessible repo
+ok 2 - clone smart http (enabled)
+ok 3 - fetch smart http (enabled)
+ok 4 - push smart http (enabled)
+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
 *** t5813-proto-disable-ssh.sh ***
 ok 1 - setup ssh wrapper
 ok 2 - setup repository to clone
@@ -10956,9 +11030,10 @@
 ok 24 - conflict at EOF without LF resolved by --ours
 ok 25 - conflict at EOF without LF resolved by --theirs
 ok 26 - conflict at EOF without LF resolved by --union
+ok 27 - conflict sections match existing line endings
 # still have 2 known breakage(s)
-# passed all remaining 24 test(s)
-1..26
+# passed all remaining 25 test(s)
+1..27
 *** t6024-recursive-merge.sh ***
 ok 1 - setup tests
 ok 2 - combined merge conflicts
@@ -11073,16 +11148,44 @@
 ok 54 - bisect log: successfull result
 ok 55 - bisect log: only skip commits left
 ok 56 - "git bisect bad HEAD" behaves as "git bisect bad"
-# passed all 56 test(s)
-1..56
-*** t6031-merge-recursive.sh ***
-ok 1 - mode change in one branch: keep changed version
-ok 2 - verify executable bit on file
-ok 3 - mode change in both branches: expect conflict
-ok 4 - verify executable bit on file
-ok 5 - merging with triple rename across D/F conflict
-# passed all 5 test(s)
-1..5
+ok 57 - bisect starts with only one new
+ok 58 - bisect does not start with only one old
+ok 59 - bisect start with one new and old
+ok 60 - bisect replay with old and new
+ok 61 - bisect cannot mix old/new and good/bad
+ok 62 - bisect terms needs 0 or 1 argument
+ok 63 - bisect terms shows good/bad after start
+ok 64 - bisect start with one term1 and term2
+ok 65 - bisect replay with term1 and term2
+ok 66 - bisect start term1 term2
+ok 67 - bisect cannot mix terms
+ok 68 - bisect terms rejects invalid terms
+ok 69 - bisect start --term-* does store terms
+ok 70 - bisect start takes options and revs in any order
+# passed all 70 test(s)
+1..70
+*** t6031-merge-filemode.sh ***
+ok 1 - set up mode change in one branch
+ok 2 - resolve single mode change (recursive, a1)
+ok 3 - verify executable bit on file (recursive, a1)
+ok 4 - resolve single mode change (recursive, b1)
+ok 5 - verify executable bit on file (recursive, b1)
+ok 6 - resolve single mode change (resolve, a1)
+ok 7 - verify executable bit on file (resolve, a1)
+ok 8 - resolve single mode change (resolve, b1)
+ok 9 - verify executable bit on file (resolve, b1)
+ok 10 - set up mode change in both branches
+ok 11 - detect conflict on double mode change (recursive)
+ok 12 - verify executable bit on file (recursive)
+ok 13 - detect conflict on double mode change (resolve)
+ok 14 - verify executable bit on file (resolve)
+ok 15 - set up delete/modechange scenario
+ok 16 - detect delete/modechange conflict (recursive, b1)
+ok 17 - detect delete/modechange conflict (recursive, deletion)
+ok 18 - detect delete/modechange conflict (resolve, b1)
+ok 19 - detect delete/modechange conflict (resolve, deletion)
+# passed all 19 test(s)
+1..19
 *** t6032-merge-large-rename.sh ***
 ok 1 - setup (initial)
 ok 2 - rename (5, ok)
@@ -11257,7 +11360,6 @@
 # passed all remaining 19 test(s)
 1..26
 *** t6050-replace.sh ***
-You do not seem to have gpg installed
 ok 1 - set up buggy branch
 ok 2 - replace the author
 ok 3 - test --no-replace-objects option
@@ -11282,15 +11384,15 @@
 ok 22 - test --format short
 ok 23 - test --format medium
 ok 24 - test --format long
-ok 25 - setup a fake editor
+ok 25 - setup fake editors
 ok 26 - --edit with and without already replaced object
 ok 27 - --edit and change nothing or command failed
 ok 28 - replace ref cleanup
 ok 29 - --graft with and without already replaced object
-ok 30 # skip set up a signed commit (missing GPG)
-ok 31 # skip --graft with a signed commit (missing GPG)
-ok 32 # skip set up a merge commit with a mergetag (missing GPG)
-ok 33 # skip --graft on a commit with a mergetag (missing GPG)
+ok 30 - set up a signed commit
+ok 31 - --graft with a signed commit
+ok 32 - set up a merge commit with a mergetag
+ok 33 - --graft on a commit with a mergetag
 # passed all 33 test(s)
 1..33
 *** t6060-merge-index.sh ***
@@ -11495,6 +11597,15 @@
 ok 16 - m_p_d() exclude :(glob)sub/*/file
 # passed all 16 test(s)
 1..16
+*** t6133-pathspec-rev-dwim.sh ***
+ok 1 - setup
+ok 2 - non-rev wildcard dwims to pathspec
+ok 3 - tree:path with metacharacters dwims to rev
+ok 4 - ^{foo} with metacharacters dwims to rev
+ok 5 - @{foo} with metacharacters dwims to rev
+ok 6 - :/*.t from a subdir dwims to a pathspec
+# passed all 6 test(s)
+1..6
 *** t6200-fmt-merge-msg.sh ***
 ok 1 - setup
 ok 2 - message for merging local branch
@@ -11523,149 +11634,164 @@
 # passed all 24 test(s)
 1..24
 *** t6300-for-each-ref.sh ***
-You do not seem to have gpg installed
 ok 1 - setup
 ok 2 - basic atom: head refname
-ok 3 - basic atom: head upstream
-ok 4 - basic atom: head push
-ok 5 - basic atom: head objecttype
-ok 6 - basic atom: head objectsize
-ok 7 - basic atom: head objectname
-ok 8 - basic atom: head tree
-ok 9 - basic atom: head parent
-ok 10 - basic atom: head numparent
-ok 11 - basic atom: head object
-ok 12 - basic atom: head type
-ok 13 - basic atom: head *objectname
-ok 14 - basic atom: head *objecttype
-ok 15 - basic atom: head author
-ok 16 - basic atom: head authorname
-ok 17 - basic atom: head authoremail
-ok 18 - basic atom: head authordate
-ok 19 - basic atom: head committer
-ok 20 - basic atom: head committername
-ok 21 - basic atom: head committeremail
-ok 22 - basic atom: head committerdate
-ok 23 - basic atom: head tag
-ok 24 - basic atom: head tagger
-ok 25 - basic atom: head taggername
-ok 26 - basic atom: head taggeremail
-ok 27 - basic atom: head taggerdate
-ok 28 - basic atom: head creator
-ok 29 - basic atom: head creatordate
-ok 30 - basic atom: head subject
-ok 31 - basic atom: head contents:subject
-ok 32 - basic atom: head body
-ok 33 - basic atom: head contents:body
-ok 34 - basic atom: head contents:signature
-ok 35 - basic atom: head contents
-ok 36 - basic atom: head HEAD
-ok 37 - basic atom: tag refname
-ok 38 - basic atom: tag upstream
-ok 39 - basic atom: tag push
-ok 40 - basic atom: tag objecttype
-ok 41 - basic atom: tag objectsize
-ok 42 - basic atom: tag objectname
-ok 43 - basic atom: tag tree
-ok 44 - basic atom: tag parent
-ok 45 - basic atom: tag numparent
-ok 46 - basic atom: tag object
-ok 47 - basic atom: tag type
-ok 48 - basic atom: tag *objectname
-ok 49 - basic atom: tag *objecttype
-ok 50 - basic atom: tag author
-ok 51 - basic atom: tag authorname
-ok 52 - basic atom: tag authoremail
-ok 53 - basic atom: tag authordate
-ok 54 - basic atom: tag committer
-ok 55 - basic atom: tag committername
-ok 56 - basic atom: tag committeremail
-ok 57 - basic atom: tag committerdate
-ok 58 - basic atom: tag tag
-ok 59 - basic atom: tag tagger
-ok 60 - basic atom: tag taggername
-ok 61 - basic atom: tag taggeremail
-ok 62 - basic atom: tag taggerdate
-ok 63 - basic atom: tag creator
-ok 64 - basic atom: tag creatordate
-ok 65 - basic atom: tag subject
-ok 66 - basic atom: tag contents:subject
-ok 67 - basic atom: tag body
-ok 68 - basic atom: tag contents:body
-ok 69 - basic atom: tag contents:signature
-ok 70 - basic atom: tag contents
-ok 71 - basic atom: tag HEAD
-ok 72 - Check invalid atoms names are errors
-ok 73 - Check format specifiers are ignored in naming date atoms
-ok 74 - Check valid format specifiers for date fields
-ok 75 - Check invalid format specifiers are errors
-ok 76 - Check unformatted date fields output
-ok 77 - Check format "default" formatted date fields output
-ok 78 - Check format "relative" date fields output
-ok 79 - Check format "short" date fields output
-ok 80 - Check format "local" date fields output
-ok 81 - Check format "iso8601" date fields output
-ok 82 - Check format "rfc2822" date fields output
-ok 83 - Check format of strftime date fields
-ok 84 - exercise strftime with odd fields
-ok 85 - Verify ascending sort
-ok 86 - Verify descending sort
-ok 87 - Quoting style: shell
-ok 88 - Quoting style: perl
-ok 89 - Quoting style: python
-ok 90 - Quoting style: tcl
-ok 91 - more than one quoting style: --perl --shell
-ok 92 - more than one quoting style: -s --python
-ok 93 - more than one quoting style: --python --tcl
-ok 94 - more than one quoting style: --tcl --perl
-ok 95 - Check short refname format
-ok 96 - Check short upstream format
-ok 97 - setup for upstream:track[short]
-ok 98 - Check upstream:track format
-ok 99 - Check upstream:trackshort format
-ok 100 - Check that :track[short] cannot be used with other atoms
-ok 101 - Check that :track[short] works when upstream is invalid
-ok 102 - %(push) supports tracking specifiers, too
-ok 103 - Check short objectname format
-ok 104 - Check for invalid refname format
-ok 105 - Check %(color:...) 
-ok 106 - Check ambiguous head and tag refs (strict)
-ok 107 - Check ambiguous head and tag refs (loose)
-ok 108 - Check ambiguous head and tag refs II (loose)
-ok 109 - an unusual tag with an incomplete line
-ok 110 - create tag with subject and body content
-ok 111 - basic atom: refs/tags/subject-body subject
-ok 112 - basic atom: refs/tags/subject-body body
-ok 113 - basic atom: refs/tags/subject-body contents
-ok 114 - create tag with multiline subject
-ok 115 - basic atom: refs/tags/multiline subject
-ok 116 - basic atom: refs/tags/multiline contents:subject
-ok 117 - basic atom: refs/tags/multiline body
-ok 118 - basic atom: refs/tags/multiline contents:body
-ok 119 - basic atom: refs/tags/multiline contents:signature
-ok 120 - basic atom: refs/tags/multiline contents
-ok 121 # skip create signed tags (missing GPG)
-ok 122 # skip basic atom: refs/tags/signed-empty subject (missing GPG)
-ok 123 # skip basic atom: refs/tags/signed-empty contents:subject (missing GPG)
-ok 124 # skip basic atom: refs/tags/signed-empty body (missing GPG)
-ok 125 # skip basic atom: refs/tags/signed-empty contents:body (missing GPG)
-ok 126 # skip basic atom: refs/tags/signed-empty contents:signature (missing GPG)
-ok 127 # skip basic atom: refs/tags/signed-empty contents (missing GPG)
-ok 128 # skip basic atom: refs/tags/signed-short subject (missing GPG)
-ok 129 # skip basic atom: refs/tags/signed-short contents:subject (missing GPG)
-ok 130 # skip basic atom: refs/tags/signed-short body (missing GPG)
-ok 131 # skip basic atom: refs/tags/signed-short contents:body (missing GPG)
-ok 132 # skip basic atom: refs/tags/signed-short contents:signature (missing GPG)
-ok 133 # skip basic atom: refs/tags/signed-short contents (missing GPG)
-ok 134 # skip basic atom: refs/tags/signed-long subject (missing GPG)
-ok 135 # skip basic atom: refs/tags/signed-long contents:subject (missing GPG)
-ok 136 # skip basic atom: refs/tags/signed-long body (missing GPG)
-ok 137 # skip basic atom: refs/tags/signed-long contents:body (missing GPG)
-ok 138 # skip basic atom: refs/tags/signed-long contents:signature (missing GPG)
-ok 139 # skip basic atom: refs/tags/signed-long contents (missing GPG)
-ok 140 - Verify sort with multiple keys
-# passed all 140 test(s)
-1..140
+ok 3 - basic atom: head refname:short
+ok 4 - basic atom: head refname:strip=1
+ok 5 - basic atom: head refname:strip=2
+ok 6 - basic atom: head upstream
+ok 7 - basic atom: head upstream:short
+ok 8 - basic atom: head push
+ok 9 - basic atom: head push:short
+ok 10 - basic atom: head objecttype
+ok 11 - basic atom: head objectsize
+ok 12 - basic atom: head objectname
+ok 13 - basic atom: head objectname:short
+ok 14 - basic atom: head tree
+ok 15 - basic atom: head parent
+ok 16 - basic atom: head numparent
+ok 17 - basic atom: head object
+ok 18 - basic atom: head type
+ok 19 - basic atom: head *objectname
+ok 20 - basic atom: head *objecttype
+ok 21 - basic atom: head author
+ok 22 - basic atom: head authorname
+ok 23 - basic atom: head authoremail
+ok 24 - basic atom: head authordate
+ok 25 - basic atom: head committer
+ok 26 - basic atom: head committername
+ok 27 - basic atom: head committeremail
+ok 28 - basic atom: head committerdate
+ok 29 - basic atom: head tag
+ok 30 - basic atom: head tagger
+ok 31 - basic atom: head taggername
+ok 32 - basic atom: head taggeremail
+ok 33 - basic atom: head taggerdate
+ok 34 - basic atom: head creator
+ok 35 - basic atom: head creatordate
+ok 36 - basic atom: head subject
+ok 37 - basic atom: head contents:subject
+ok 38 - basic atom: head body
+ok 39 - basic atom: head contents:body
+ok 40 - basic atom: head contents:signature
+ok 41 - basic atom: head contents
+ok 42 - basic atom: head HEAD
+ok 43 - basic atom: tag refname
+ok 44 - basic atom: tag refname:short
+ok 45 - basic atom: tag upstream
+ok 46 - basic atom: tag push
+ok 47 - basic atom: tag objecttype
+ok 48 - basic atom: tag objectsize
+ok 49 - basic atom: tag objectname
+ok 50 - basic atom: tag objectname:short
+ok 51 - basic atom: tag tree
+ok 52 - basic atom: tag parent
+ok 53 - basic atom: tag numparent
+ok 54 - basic atom: tag object
+ok 55 - basic atom: tag type
+ok 56 - basic atom: tag *objectname
+ok 57 - basic atom: tag *objecttype
+ok 58 - basic atom: tag author
+ok 59 - basic atom: tag authorname
+ok 60 - basic atom: tag authoremail
+ok 61 - basic atom: tag authordate
+ok 62 - basic atom: tag committer
+ok 63 - basic atom: tag committername
+ok 64 - basic atom: tag committeremail
+ok 65 - basic atom: tag committerdate
+ok 66 - basic atom: tag tag
+ok 67 - basic atom: tag tagger
+ok 68 - basic atom: tag taggername
+ok 69 - basic atom: tag taggeremail
+ok 70 - basic atom: tag taggerdate
+ok 71 - basic atom: tag creator
+ok 72 - basic atom: tag creatordate
+ok 73 - basic atom: tag subject
+ok 74 - basic atom: tag contents:subject
+ok 75 - basic atom: tag body
+ok 76 - basic atom: tag contents:body
+ok 77 - basic atom: tag contents:signature
+ok 78 - basic atom: tag contents
+ok 79 - basic atom: tag HEAD
+ok 80 - Check invalid atoms names are errors
+ok 81 - arguments to :strip must be positive integers
+ok 82 - stripping refnames too far gives an error
+ok 83 - Check format specifiers are ignored in naming date atoms
+ok 84 - Check valid format specifiers for date fields
+ok 85 - Check invalid format specifiers are errors
+ok 86 - Check unformatted date fields output
+ok 87 - Check format "default" formatted date fields output
+ok 88 - Check format "default-local" date fields output
+ok 89 - Check format "relative" date fields output
+ok 90 - Check format "relative-local" date fields output
+ok 91 - Check format "short" date fields output
+ok 92 - Check format "short-local" date fields output
+ok 93 - Check format "local" date fields output
+ok 94 - Check format "iso8601" date fields output
+ok 95 - Check format "iso8601-local" date fields output
+ok 96 - Check format "rfc2822" date fields output
+ok 97 - Check format "rfc2822-local" date fields output
+ok 98 - Check format "raw" date fields output
+ok 99 - Check format "raw-local" date fields output
+ok 100 - Check format of strftime date fields
+ok 101 - Check format of strftime-local date fields
+ok 102 - exercise strftime with odd fields
+ok 103 - Verify ascending sort
+ok 104 - Verify descending sort
+ok 105 - Quoting style: shell
+ok 106 - Quoting style: perl
+ok 107 - Quoting style: python
+ok 108 - Quoting style: tcl
+ok 109 - more than one quoting style: --perl --shell
+ok 110 - more than one quoting style: -s --python
+ok 111 - more than one quoting style: --python --tcl
+ok 112 - more than one quoting style: --tcl --perl
+ok 113 - setup for upstream:track[short]
+ok 114 - basic atom: head upstream:track
+ok 115 - basic atom: head upstream:trackshort
+ok 116 - basic atom: head push:track
+ok 117 - basic atom: head push:trackshort
+ok 118 - Check that :track[short] cannot be used with other atoms
+ok 119 - Check that :track[short] works when upstream is invalid
+ok 120 - Check for invalid refname format
+ok 121 - Check %(color:...) 
+ok 122 - Check ambiguous head and tag refs (strict)
+ok 123 - Check ambiguous head and tag refs (loose)
+ok 124 - Check ambiguous head and tag refs II (loose)
+ok 125 - an unusual tag with an incomplete line
+ok 126 - create tag with subject and body content
+ok 127 - basic atom: refs/tags/subject-body subject
+ok 128 - basic atom: refs/tags/subject-body body
+ok 129 - basic atom: refs/tags/subject-body contents
+ok 130 - create tag with multiline subject
+ok 131 - basic atom: refs/tags/multiline subject
+ok 132 - basic atom: refs/tags/multiline contents:subject
+ok 133 - basic atom: refs/tags/multiline body
+ok 134 - basic atom: refs/tags/multiline contents:body
+ok 135 - basic atom: refs/tags/multiline contents:signature
+ok 136 - basic atom: refs/tags/multiline contents
+ok 137 - create signed tags
+ok 138 - basic atom: refs/tags/signed-empty subject
+ok 139 - basic atom: refs/tags/signed-empty contents:subject
+ok 140 - basic atom: refs/tags/signed-empty body
+ok 141 - basic atom: refs/tags/signed-empty contents:body
+ok 142 - basic atom: refs/tags/signed-empty contents:signature
+ok 143 - basic atom: refs/tags/signed-empty contents
+ok 144 - basic atom: refs/tags/signed-short subject
+ok 145 - basic atom: refs/tags/signed-short contents:subject
+ok 146 - basic atom: refs/tags/signed-short body
+ok 147 - basic atom: refs/tags/signed-short contents:body
+ok 148 - basic atom: refs/tags/signed-short contents:signature
+ok 149 - basic atom: refs/tags/signed-short contents
+ok 150 - basic atom: refs/tags/signed-long subject
+ok 151 - basic atom: refs/tags/signed-long contents:subject
+ok 152 - basic atom: refs/tags/signed-long body
+ok 153 - basic atom: refs/tags/signed-long contents:body
+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
 *** t6301-for-each-ref-errors.sh ***
 ok 1 - setup
 ok 2 - Broken refs are reported correctly
@@ -11673,13 +11799,37 @@
 ok 4 - Missing objects are reported correctly
 # passed all 4 test(s)
 1..4
+*** t6302-for-each-ref-filter.sh ***
+ok 1 - setup some history and refs
+ok 2 - filtering with --points-at
+ok 3 - check signed tags with --points-at
+ok 4 - filtering with --merged
+ok 5 - filtering with --no-merged
+ok 6 - filtering with --contains
+ok 7 - %(color) must fail
+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
 *** 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
-# passed all 4 test(s)
-1..4
+ok 5 - gc is not aborted due to a stale symref
+# passed all 5 test(s)
+1..5
 *** t6501-freshen-objects.sh ***
 ok 1 - make repo completely empty (loose)
 ok 2 - disable reflogs (loose)
@@ -11787,19 +11937,21 @@
 ok 25 - Subdirectory filter with disappearing trees
 ok 26 - Tag name filtering retains tag message
 ok 27 - Tag name filtering strips gpg signature
-ok 28 - Tag name filtering allows slashes in tag names
-ok 29 - Prune empty commits
-ok 30 - prune empty collapsed merges
-ok 31 - --remap-to-ancestor with filename filters
-ok 32 - automatic remapping to ancestor with filename filters
-ok 33 - setup submodule
-ok 34 - rewrite submodule with another content
-ok 35 - replace submodule revision
-ok 36 - filter commit message without trailing newline
-# passed all 36 test(s)
-1..36
+ok 28 - Filtering retains message of gpg signed commit
+ok 29 - Tag name filtering allows slashes in tag names
+ok 30 - Prune empty commits
+ok 31 - prune empty collapsed merges
+ok 32 - prune empty works even without index/tree filters
+ok 33 - --remap-to-ancestor with filename filters
+ok 34 - automatic remapping to ancestor with filename filters
+ok 35 - setup submodule
+ok 36 - rewrite submodule with another content
+ok 37 - replace submodule revision
+ok 38 - filter commit message without trailing newline
+ok 39 - tree-filter deals with object name vs pathname ambiguity
+# passed all 39 test(s)
+1..39
 *** t7004-tag.sh ***
-You do not seem to have gpg installed
 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
@@ -11865,47 +12017,47 @@
 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 # skip trying to verify an annotated non-signed tag should fail (missing GPG)
-ok 65 # skip trying to verify a file-annotated non-signed tag should fail (missing GPG)
-ok 66 # skip trying to verify two annotated non-signed tags should fail (missing GPG)
-ok 67 # skip creating a signed tag with -m message should succeed (missing GPG)
-ok 68 # skip sign with a given key id (missing GPG)
-ok 69 # skip sign with an unknown id (1) (missing GPG)
-ok 70 # skip sign with an unknown id (2) (missing GPG)
-ok 71 # skip -u implies signed tag (missing GPG)
-ok 72 # skip creating a signed tag with -F messagefile should succeed (missing GPG)
-ok 73 # skip creating a signed tag with -F - should succeed (missing GPG)
-ok 74 # skip -s implies annotated tag (missing GPG)
-ok 75 # skip trying to create a signed tag with non-existing -F file should fail (missing GPG)
-ok 76 # skip verifying a signed tag should succeed (missing GPG)
-ok 77 # skip verifying two signed tags in one command should succeed (missing GPG)
-ok 78 # skip verifying many signed and non-signed tags should fail (missing GPG)
-ok 79 # skip verifying a forged tag should fail (missing GPG)
-ok 80 # skip creating a signed tag with an empty -m message should succeed (missing GPG)
-ok 81 # skip creating a signed tag with an empty -F messagefile should succeed (missing GPG)
-ok 82 # skip extra blanks in the message for a signed tag should be removed (missing GPG)
-ok 83 # skip creating a signed tag with a blank -m message should succeed (missing GPG)
-ok 84 # skip creating a signed tag with blank -F file with spaces should succeed (missing GPG)
-ok 85 # skip creating a signed tag with spaces and no newline should succeed (missing GPG)
-ok 86 # skip creating a signed tag with a -F file with #comments should succeed (missing GPG)
-ok 87 # skip creating a signed tag with #commented -m message should succeed (missing GPG)
-ok 88 # skip creating a signed tag with #commented -F messagefile should succeed (missing GPG)
-ok 89 # skip creating a signed tag with a #comment and no newline should succeed (missing GPG)
-ok 90 # skip listing the one-line message of a signed tag should succeed (missing GPG)
-ok 91 # skip listing the zero-lines message of a signed tag should succeed (missing GPG)
-ok 92 # skip listing many message lines of a signed tag should succeed (missing GPG)
-ok 93 # skip creating a signed tag pointing to a tree should succeed (missing GPG)
-ok 94 # skip creating a signed tag pointing to a blob should succeed (missing GPG)
-ok 95 # skip creating a signed tag pointing to another tag should succeed (missing GPG)
-ok 96 # skip creating a signed tag with rfc1991 (missing RFC1991,GPG of GPG,RFC1991)
-ok 97 # skip reediting a signed tag body omits signature (missing RFC1991,GPG of GPG,RFC1991)
-ok 98 # skip verifying rfc1991 signature (missing RFC1991,GPG of GPG,RFC1991)
-ok 99 # skip list tag with rfc1991 signature (missing RFC1991,GPG of GPG,RFC1991)
-ok 100 # skip verifying rfc1991 signature without --rfc1991 (missing RFC1991,GPG of GPG,RFC1991)
-ok 101 # skip list tag with rfc1991 signature without --rfc1991 (missing RFC1991,GPG of GPG,RFC1991)
-ok 102 # skip reediting a signed tag body omits signature (missing RFC1991,GPG of GPG,RFC1991)
-ok 103 # skip git tag -s fails if gpg is misconfigured (missing GPG)
-ok 104 # skip verify signed tag fails when public key is not present (missing GPG)
+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
@@ -11942,8 +12094,14 @@
 ok 138 - version sort with prerelease reordering
 ok 139 - reverse version sort with prerelease reordering
 ok 140 - --contains works in a deep repo
-# passed all 140 test(s)
-1..140
+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
 *** t7005-editor.sh ***
 ok 1 - determine default editor
 ok 2 - setup
@@ -12153,11 +12311,10 @@
 # passed all 11 test(s)
 1..11
 *** t7030-verify-tag.sh ***
-You do not seem to have gpg installed
-ok 1 # skip create signed tags (missing GPG)
-ok 2 # skip verify and show signatures (missing GPG)
-ok 3 # skip detect fudged signature (missing GPG)
-ok 4 # skip verify signatures with --raw (missing GPG)
+ok 1 - create signed tags
+ok 2 - verify and show signatures
+ok 3 - detect fudged signature
+ok 4 - verify signatures with --raw
 # passed all 4 test(s)
 1..4
 *** t7060-wtstatus.sh ***
@@ -12175,8 +12332,9 @@
 ok 12 - prepare for conflicts
 ok 13 - status when conflicts with add and rm advice (both deleted)
 ok 14 - status when conflicts with only rm advice (both deleted)
-# passed all 14 test(s)
-1..14
+ok 15 - status --branch with detached HEAD
+# passed all 15 test(s)
+1..15
 *** t7061-wtstatus-ignore.sh ***
 ok 1 - status untracked directory with --ignored
 ok 2 - same with gitignore starting with BOM
@@ -12639,8 +12797,9 @@
 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
-# passed all 82 test(s)
-1..82
+ok 83 - submodule helper list is not confused by common prefixes
+# passed all 83 test(s)
+1..83
 *** t7401-submodule-summary.sh ***
 ok 1 - added submodule
 ok 2 - added submodule (subdirectory)
@@ -12789,7 +12948,7 @@
 ok 10 - that reference gets used with update
 # passed all 10 test(s)
 1..10
-*** t7409-submodule-detached-worktree.sh ***
+*** t7409-submodule-detached-work-tree.sh ***
 ok 1 - submodule on detached working tree
 ok 2 - submodule on detached working pointed by core.worktree
 # passed all 2 test(s)
@@ -12801,9 +12960,11 @@
 not ok 4 - can see submodule diffs just after checkout # TODO known breakage
 ok 5 - checkout main and initialize independed clones
 ok 6 - can see submodule diffs after independed cloning
+ok 7 - checkout sub manually
+ok 8 - can see submodule diffs after manual checkout of linked submodule
 # still have 1 known breakage(s)
-# passed all remaining 5 test(s)
-1..6
+# passed all remaining 7 test(s)
+1..8
 *** t7411-submodule-config.sh ***
 ok 1 - submodule config cache setup
 ok 2 - test parsing and lookup of submodule config by path
@@ -13201,19 +13362,18 @@
 # passed all 12 test(s)
 1..12
 *** t7510-signed-commit.sh ***
-You do not seem to have gpg installed
-ok 1 # skip create signed commits (missing GPG)
-ok 2 # skip verify and show signatures (missing GPG)
-ok 3 # skip verify-commit exits success on untrusted signature (missing GPG)
-ok 4 # skip verify signatures with --raw (missing GPG)
-ok 5 # skip show signed commit with signature (missing GPG)
-ok 6 # skip detect fudged signature (missing GPG)
-ok 7 # skip detect fudged signature with NUL (missing GPG)
-ok 8 # skip amending already signed commit (missing GPG)
-ok 9 # skip show good signature with custom format (missing GPG)
-ok 10 # skip show bad signature with custom format (missing GPG)
-ok 11 # skip show unknown signature with custom format (missing GPG)
-ok 12 # skip show lack of signature with custom format (missing GPG)
+ok 1 - create signed commits
+ok 2 - verify and show signatures
+ok 3 - verify-commit exits success on untrusted signature
+ok 4 - verify signatures with --raw
+ok 5 - show signed commit with signature
+ok 6 - detect fudged signature
+ok 7 - detect fudged signature with NUL
+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
 *** t7511-status-index.sh ***
@@ -13359,7 +13519,6 @@
 # passed all 2 test(s)
 1..2
 *** t7600-merge.sh ***
-You do not seem to have gpg installed
 ok 1 - setup
 ok 2 - test option parsing
 ok 3 - merge -h with invalid index
@@ -13407,10 +13566,13 @@
 ok 45 - merge --no-ff --no-commit && commit
 ok 46 - amending no-ff merge commit
 ok 47 - merge --no-ff --edit
-ok 48 # skip merge --ff-only tag (missing GPG)
-ok 49 # skip merge --no-edit tag should skip editor (missing GPG)
-# passed all 49 test(s)
-1..49
+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
 *** t7601-merge-pull-config.sh ***
 ok 1 - setup
 ok 2 - merge c1 with c2
@@ -13561,13 +13723,12 @@
 # passed all 26 test(s)
 1..26
 *** t7612-merge-verify-signatures.sh ***
-You do not seem to have gpg installed
-ok 1 # skip create signed commits (missing GPG)
-ok 2 # skip merge unsigned commit with verification (missing GPG)
-ok 3 # skip merge commit with bad signature with verification (missing GPG)
-ok 4 # skip merge commit with untrusted signature with verification (missing GPG)
-ok 5 # skip merge signed commit with verification (missing GPG)
-ok 6 # skip merge commit with bad signature without verification (missing GPG)
+ok 1 - create signed commits
+ok 2 - merge unsigned commit with verification
+ok 3 - merge commit with bad signature with verification
+ok 4 - merge commit with untrusted signature with verification
+ok 5 - merge signed commit with verification
+ok 6 - merge commit with bad signature without verification
 # passed all 6 test(s)
 1..6
 *** t7613-merge-submodule.sh ***
@@ -13713,8 +13874,9 @@
 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
-# passed all 56 test(s)
-1..56
+ok 57 - difftool --dir-diff symlinked directories
+# passed all 57 test(s)
+1..57
 *** t7810-grep.sh ***
 ok 1 - setup
 ok 2 - grep should not segfault with a bad input
@@ -13894,224 +14056,228 @@
 *** t8001-annotate.sh ***
 ok 1 - setup A lines
 ok 2 - blame 1 author
-ok 3 - setup B lines
-ok 4 - blame 2 authors
-ok 5 - setup B1 lines (branch1)
-ok 6 - blame 2 authors + 1 branch1 author
-ok 7 - setup B2 lines (branch2)
-ok 8 - blame 2 authors + 1 branch2 author
-ok 9 - merge branch1 & branch2
-ok 10 - blame 2 authors + 2 merged-in authors
-ok 11 - blame ancestor
-ok 12 - blame great-ancestor
-ok 13 - setup evil merge
-ok 14 - blame evil merge
-ok 15 - blame huge graft
-ok 16 - setup incomplete line
-ok 17 - blame incomplete line
-ok 18 - setup edits
-ok 19 - blame edits
-ok 20 - setup obfuscated email
-ok 21 - blame obfuscated email
-ok 22 - blame -L 1 (all)
-ok 23 - blame -L , (all)
-ok 24 - blame -L X (X to end)
-ok 25 - blame -L X, (X to end)
-ok 26 - blame -L ,Y (up to Y)
-ok 27 - blame -L X,X
-ok 28 - blame -L X,Y
-ok 29 - blame -L Y,X (undocumented)
-ok 30 - blame -L -X
-ok 31 - blame -L 0
-ok 32 - blame -L ,0
-ok 33 - blame -L ,+0
-ok 34 - blame -L X,+0
-ok 35 - blame -L X,+1
-ok 36 - blame -L X,+N
-ok 37 - blame -L ,-0
-ok 38 - blame -L X,-0
-ok 39 - blame -L X,-1
-ok 40 - blame -L X,-N
-ok 41 - blame -L /RE/ (RE to end)
-ok 42 - blame -L /RE/,/RE2/
-ok 43 - blame -L X,/RE/
-ok 44 - blame -L /RE/,Y
-ok 45 - blame -L /RE/,+N
-ok 46 - blame -L /RE/,-N
-ok 47 - blame -L X (X == nlines)
-ok 48 - blame -L X (X == nlines + 1)
-ok 49 - blame -L X (X > nlines)
-ok 50 - blame -L ,Y (Y == nlines)
-ok 51 - blame -L ,Y (Y == nlines + 1)
-ok 52 - blame -L ,Y (Y > nlines)
-ok 53 - blame -L multiple (disjoint)
-ok 54 - blame -L multiple (disjoint: unordered)
-ok 55 - blame -L multiple (adjacent)
-ok 56 - blame -L multiple (adjacent: unordered)
-ok 57 - blame -L multiple (overlapping)
-ok 58 - blame -L multiple (overlapping: unordered)
-ok 59 - blame -L multiple (superset/subset)
-ok 60 - blame -L multiple (superset/subset: unordered)
-ok 61 - blame -L /RE/ (relative)
-ok 62 - blame -L /RE/ (relative: no preceding range)
-ok 63 - blame -L /RE/ (relative: adjacent)
-ok 64 - blame -L /RE/ (relative: not found)
-ok 65 - blame -L /RE/ (relative: end-of-file)
-ok 66 - blame -L ^/RE/ (absolute)
-ok 67 - blame -L ^/RE/ (absolute: no preceding range)
-ok 68 - blame -L ^/RE/ (absolute: not found)
-ok 69 - blame -L ^/RE/ (absolute: end-of-file)
-ok 70 - setup -L :regex
-ok 71 - blame -L :literal
-ok 72 - blame -L :regex
-ok 73 - blame -L :nomatch
-ok 74 - blame -L :RE (relative)
-ok 75 - blame -L :RE (relative: no preceding range)
-ok 76 - blame -L :RE (relative: not found)
-ok 77 - blame -L :RE (relative: end-of-file)
-ok 78 - blame -L ^:RE (absolute)
-ok 79 - blame -L ^:RE (absolute: no preceding range)
-ok 80 - blame -L ^:RE (absolute: not found)
-ok 81 - blame -L ^:RE (absolute: end-of-file)
-ok 82 - setup incremental
-ok 83 - blame empty
-ok 84 - blame -L 0 empty
-ok 85 - blame -L 1 empty
-ok 86 - blame -L 2 empty
-ok 87 - blame half
-ok 88 - blame -L 0 half
-ok 89 - blame -L 1 half
-ok 90 - blame -L 2 half
-ok 91 - blame -L 3 half
-ok 92 - blame full
-ok 93 - blame -L 0 full
-ok 94 - blame -L 1 full
-ok 95 - blame -L 2 full
-ok 96 - blame -L 3 full
-ok 97 - blame -L
-ok 98 - blame -L X,+
-ok 99 - blame -L X,-
-ok 100 - blame -L X (non-numeric X)
-ok 101 - blame -L X,Y (non-numeric Y)
-ok 102 - blame -L X,+N (non-numeric N)
-ok 103 - blame -L X,-N (non-numeric N)
-ok 104 - blame -L ,^/RE/
-ok 105 - annotate old revision
-# passed all 105 test(s)
-1..105
+ok 3 - blame by tag objects
+ok 4 - setup B lines
+ok 5 - blame 2 authors
+ok 6 - setup B1 lines (branch1)
+ok 7 - blame 2 authors + 1 branch1 author
+ok 8 - setup B2 lines (branch2)
+ok 9 - blame 2 authors + 1 branch2 author
+ok 10 - merge branch1 & branch2
+ok 11 - blame 2 authors + 2 merged-in authors
+ok 12 - blame --first-parent blames merge for branch1
+ok 13 - blame ancestor
+ok 14 - blame great-ancestor
+ok 15 - setup evil merge
+ok 16 - blame evil merge
+ok 17 - blame huge graft
+ok 18 - setup incomplete line
+ok 19 - blame incomplete line
+ok 20 - setup edits
+ok 21 - blame edits
+ok 22 - setup obfuscated email
+ok 23 - blame obfuscated email
+ok 24 - blame -L 1 (all)
+ok 25 - blame -L , (all)
+ok 26 - blame -L X (X to end)
+ok 27 - blame -L X, (X to end)
+ok 28 - blame -L ,Y (up to Y)
+ok 29 - blame -L X,X
+ok 30 - blame -L X,Y
+ok 31 - blame -L Y,X (undocumented)
+ok 32 - blame -L -X
+ok 33 - blame -L 0
+ok 34 - blame -L ,0
+ok 35 - blame -L ,+0
+ok 36 - blame -L X,+0
+ok 37 - blame -L X,+1
+ok 38 - blame -L X,+N
+ok 39 - blame -L ,-0
+ok 40 - blame -L X,-0
+ok 41 - blame -L X,-1
+ok 42 - blame -L X,-N
+ok 43 - blame -L /RE/ (RE to end)
+ok 44 - blame -L /RE/,/RE2/
+ok 45 - blame -L X,/RE/
+ok 46 - blame -L /RE/,Y
+ok 47 - blame -L /RE/,+N
+ok 48 - blame -L /RE/,-N
+ok 49 - blame -L X (X == nlines)
+ok 50 - blame -L X (X == nlines + 1)
+ok 51 - blame -L X (X > nlines)
+ok 52 - blame -L ,Y (Y == nlines)
+ok 53 - blame -L ,Y (Y == nlines + 1)
+ok 54 - blame -L ,Y (Y > nlines)
+ok 55 - blame -L multiple (disjoint)
+ok 56 - blame -L multiple (disjoint: unordered)
+ok 57 - blame -L multiple (adjacent)
+ok 58 - blame -L multiple (adjacent: unordered)
+ok 59 - blame -L multiple (overlapping)
+ok 60 - blame -L multiple (overlapping: unordered)
+ok 61 - blame -L multiple (superset/subset)
+ok 62 - blame -L multiple (superset/subset: unordered)
+ok 63 - blame -L /RE/ (relative)
+ok 64 - blame -L /RE/ (relative: no preceding range)
+ok 65 - blame -L /RE/ (relative: adjacent)
+ok 66 - blame -L /RE/ (relative: not found)
+ok 67 - blame -L /RE/ (relative: end-of-file)
+ok 68 - blame -L ^/RE/ (absolute)
+ok 69 - blame -L ^/RE/ (absolute: no preceding range)
+ok 70 - blame -L ^/RE/ (absolute: not found)
+ok 71 - blame -L ^/RE/ (absolute: end-of-file)
+ok 72 - setup -L :regex
+ok 73 - blame -L :literal
+ok 74 - blame -L :regex
+ok 75 - blame -L :nomatch
+ok 76 - blame -L :RE (relative)
+ok 77 - blame -L :RE (relative: no preceding range)
+ok 78 - blame -L :RE (relative: not found)
+ok 79 - blame -L :RE (relative: end-of-file)
+ok 80 - blame -L ^:RE (absolute)
+ok 81 - blame -L ^:RE (absolute: no preceding range)
+ok 82 - blame -L ^:RE (absolute: not found)
+ok 83 - blame -L ^:RE (absolute: end-of-file)
+ok 84 - setup incremental
+ok 85 - blame empty
+ok 86 - blame -L 0 empty
+ok 87 - blame -L 1 empty
+ok 88 - blame -L 2 empty
+ok 89 - blame half
+ok 90 - blame -L 0 half
+ok 91 - blame -L 1 half
+ok 92 - blame -L 2 half
+ok 93 - blame -L 3 half
+ok 94 - blame full
+ok 95 - blame -L 0 full
+ok 96 - blame -L 1 full
+ok 97 - blame -L 2 full
+ok 98 - blame -L 3 full
+ok 99 - blame -L
+ok 100 - blame -L X,+
+ok 101 - blame -L X,-
+ok 102 - blame -L X (non-numeric X)
+ok 103 - blame -L X,Y (non-numeric Y)
+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 - annotate old revision
+# passed all 107 test(s)
+1..107
 *** t8002-blame.sh ***
 ok 1 - setup A lines
 ok 2 - blame 1 author
-ok 3 - setup B lines
-ok 4 - blame 2 authors
-ok 5 - setup B1 lines (branch1)
-ok 6 - blame 2 authors + 1 branch1 author
-ok 7 - setup B2 lines (branch2)
-ok 8 - blame 2 authors + 1 branch2 author
-ok 9 - merge branch1 & branch2
-ok 10 - blame 2 authors + 2 merged-in authors
-ok 11 - blame ancestor
-ok 12 - blame great-ancestor
-ok 13 - setup evil merge
-ok 14 - blame evil merge
-ok 15 - blame huge graft
-ok 16 - setup incomplete line
-ok 17 - blame incomplete line
-ok 18 - setup edits
-ok 19 - blame edits
-ok 20 - setup obfuscated email
-ok 21 - blame obfuscated email
-ok 22 - blame -L 1 (all)
-ok 23 - blame -L , (all)
-ok 24 - blame -L X (X to end)
-ok 25 - blame -L X, (X to end)
-ok 26 - blame -L ,Y (up to Y)
-ok 27 - blame -L X,X
-ok 28 - blame -L X,Y
-ok 29 - blame -L Y,X (undocumented)
-ok 30 - blame -L -X
-ok 31 - blame -L 0
-ok 32 - blame -L ,0
-ok 33 - blame -L ,+0
-ok 34 - blame -L X,+0
-ok 35 - blame -L X,+1
-ok 36 - blame -L X,+N
-ok 37 - blame -L ,-0
-ok 38 - blame -L X,-0
-ok 39 - blame -L X,-1
-ok 40 - blame -L X,-N
-ok 41 - blame -L /RE/ (RE to end)
-ok 42 - blame -L /RE/,/RE2/
-ok 43 - blame -L X,/RE/
-ok 44 - blame -L /RE/,Y
-ok 45 - blame -L /RE/,+N
-ok 46 - blame -L /RE/,-N
-ok 47 - blame -L X (X == nlines)
-ok 48 - blame -L X (X == nlines + 1)
-ok 49 - blame -L X (X > nlines)
-ok 50 - blame -L ,Y (Y == nlines)
-ok 51 - blame -L ,Y (Y == nlines + 1)
-ok 52 - blame -L ,Y (Y > nlines)
-ok 53 - blame -L multiple (disjoint)
-ok 54 - blame -L multiple (disjoint: unordered)
-ok 55 - blame -L multiple (adjacent)
-ok 56 - blame -L multiple (adjacent: unordered)
-ok 57 - blame -L multiple (overlapping)
-ok 58 - blame -L multiple (overlapping: unordered)
-ok 59 - blame -L multiple (superset/subset)
-ok 60 - blame -L multiple (superset/subset: unordered)
-ok 61 - blame -L /RE/ (relative)
-ok 62 - blame -L /RE/ (relative: no preceding range)
-ok 63 - blame -L /RE/ (relative: adjacent)
-ok 64 - blame -L /RE/ (relative: not found)
-ok 65 - blame -L /RE/ (relative: end-of-file)
-ok 66 - blame -L ^/RE/ (absolute)
-ok 67 - blame -L ^/RE/ (absolute: no preceding range)
-ok 68 - blame -L ^/RE/ (absolute: not found)
-ok 69 - blame -L ^/RE/ (absolute: end-of-file)
-ok 70 - setup -L :regex
-ok 71 - blame -L :literal
-ok 72 - blame -L :regex
-ok 73 - blame -L :nomatch
-ok 74 - blame -L :RE (relative)
-ok 75 - blame -L :RE (relative: no preceding range)
-ok 76 - blame -L :RE (relative: not found)
-ok 77 - blame -L :RE (relative: end-of-file)
-ok 78 - blame -L ^:RE (absolute)
-ok 79 - blame -L ^:RE (absolute: no preceding range)
-ok 80 - blame -L ^:RE (absolute: not found)
-ok 81 - blame -L ^:RE (absolute: end-of-file)
-ok 82 - setup incremental
-ok 83 - blame empty
-ok 84 - blame -L 0 empty
-ok 85 - blame -L 1 empty
-ok 86 - blame -L 2 empty
-ok 87 - blame half
-ok 88 - blame -L 0 half
-ok 89 - blame -L 1 half
-ok 90 - blame -L 2 half
-ok 91 - blame -L 3 half
-ok 92 - blame full
-ok 93 - blame -L 0 full
-ok 94 - blame -L 1 full
-ok 95 - blame -L 2 full
-ok 96 - blame -L 3 full
-ok 97 - blame -L
-ok 98 - blame -L X,+
-ok 99 - blame -L X,-
-ok 100 - blame -L X (non-numeric X)
-ok 101 - blame -L X,Y (non-numeric Y)
-ok 102 - blame -L X,+N (non-numeric N)
-ok 103 - blame -L X,-N (non-numeric N)
-ok 104 - blame -L ,^/RE/
-ok 105 - blame --show-email
-ok 106 - setup showEmail tests
-ok 107 - blame with no options and no config
-ok 108 - blame with showemail options
-ok 109 - blame with showEmail config false
-ok 110 - blame with showEmail config true
-# passed all 110 test(s)
-1..110
+ok 3 - blame by tag objects
+ok 4 - setup B lines
+ok 5 - blame 2 authors
+ok 6 - setup B1 lines (branch1)
+ok 7 - blame 2 authors + 1 branch1 author
+ok 8 - setup B2 lines (branch2)
+ok 9 - blame 2 authors + 1 branch2 author
+ok 10 - merge branch1 & branch2
+ok 11 - blame 2 authors + 2 merged-in authors
+ok 12 - blame --first-parent blames merge for branch1
+ok 13 - blame ancestor
+ok 14 - blame great-ancestor
+ok 15 - setup evil merge
+ok 16 - blame evil merge
+ok 17 - blame huge graft
+ok 18 - setup incomplete line
+ok 19 - blame incomplete line
+ok 20 - setup edits
+ok 21 - blame edits
+ok 22 - setup obfuscated email
+ok 23 - blame obfuscated email
+ok 24 - blame -L 1 (all)
+ok 25 - blame -L , (all)
+ok 26 - blame -L X (X to end)
+ok 27 - blame -L X, (X to end)
+ok 28 - blame -L ,Y (up to Y)
+ok 29 - blame -L X,X
+ok 30 - blame -L X,Y
+ok 31 - blame -L Y,X (undocumented)
+ok 32 - blame -L -X
+ok 33 - blame -L 0
+ok 34 - blame -L ,0
+ok 35 - blame -L ,+0
+ok 36 - blame -L X,+0
+ok 37 - blame -L X,+1
+ok 38 - blame -L X,+N
+ok 39 - blame -L ,-0
+ok 40 - blame -L X,-0
+ok 41 - blame -L X,-1
+ok 42 - blame -L X,-N
+ok 43 - blame -L /RE/ (RE to end)
+ok 44 - blame -L /RE/,/RE2/
+ok 45 - blame -L X,/RE/
+ok 46 - blame -L /RE/,Y
+ok 47 - blame -L /RE/,+N
+ok 48 - blame -L /RE/,-N
+ok 49 - blame -L X (X == nlines)
+ok 50 - blame -L X (X == nlines + 1)
+ok 51 - blame -L X (X > nlines)
+ok 52 - blame -L ,Y (Y == nlines)
+ok 53 - blame -L ,Y (Y == nlines + 1)
+ok 54 - blame -L ,Y (Y > nlines)
+ok 55 - blame -L multiple (disjoint)
+ok 56 - blame -L multiple (disjoint: unordered)
+ok 57 - blame -L multiple (adjacent)
+ok 58 - blame -L multiple (adjacent: unordered)
+ok 59 - blame -L multiple (overlapping)
+ok 60 - blame -L multiple (overlapping: unordered)
+ok 61 - blame -L multiple (superset/subset)
+ok 62 - blame -L multiple (superset/subset: unordered)
+ok 63 - blame -L /RE/ (relative)
+ok 64 - blame -L /RE/ (relative: no preceding range)
+ok 65 - blame -L /RE/ (relative: adjacent)
+ok 66 - blame -L /RE/ (relative: not found)
+ok 67 - blame -L /RE/ (relative: end-of-file)
+ok 68 - blame -L ^/RE/ (absolute)
+ok 69 - blame -L ^/RE/ (absolute: no preceding range)
+ok 70 - blame -L ^/RE/ (absolute: not found)
+ok 71 - blame -L ^/RE/ (absolute: end-of-file)
+ok 72 - setup -L :regex
+ok 73 - blame -L :literal
+ok 74 - blame -L :regex
+ok 75 - blame -L :nomatch
+ok 76 - blame -L :RE (relative)
+ok 77 - blame -L :RE (relative: no preceding range)
+ok 78 - blame -L :RE (relative: not found)
+ok 79 - blame -L :RE (relative: end-of-file)
+ok 80 - blame -L ^:RE (absolute)
+ok 81 - blame -L ^:RE (absolute: no preceding range)
+ok 82 - blame -L ^:RE (absolute: not found)
+ok 83 - blame -L ^:RE (absolute: end-of-file)
+ok 84 - setup incremental
+ok 85 - blame empty
+ok 86 - blame -L 0 empty
+ok 87 - blame -L 1 empty
+ok 88 - blame -L 2 empty
+ok 89 - blame half
+ok 90 - blame -L 0 half
+ok 91 - blame -L 1 half
+ok 92 - blame -L 2 half
+ok 93 - blame -L 3 half
+ok 94 - blame full
+ok 95 - blame -L 0 full
+ok 96 - blame -L 1 full
+ok 97 - blame -L 2 full
+ok 98 - blame -L 3 full
+ok 99 - blame -L
+ok 100 - blame -L X,+
+ok 101 - blame -L X,-
+ok 102 - blame -L X (non-numeric X)
+ok 103 - blame -L X,Y (non-numeric Y)
+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
 *** t8003-blame-corner-cases.sh ***
 ok 1 - setup
 ok 2 - straight copy without -C
@@ -14191,6 +14357,11 @@
 ok 4 - blame --line-porcelain output
 # passed all 4 test(s)
 1..4
+*** t8009-blame-vs-topicbranches.sh ***
+ok 1 - setup
+ok 2 - blame --reverse --first-parent finds A1
+# passed all 2 test(s)
+1..2
 *** t9000-addresses.sh ***
 1..0 # SKIP Perl Mail::Address unavailable, skipping test
 *** t9001-send-email.sh ***
@@ -14317,25 +14488,32 @@
 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 - sendemail.aliasfiletype=mailrc
-ok 125 - sendemail.aliasfile=~/.mailrc
-ok 126 - sendemail.aliasfiletype=sendmail
-ok 127 - sendmail aliases line folding
-ok 128 - sendmail aliases tolerate bogus line folding
-ok 129 - sendmail aliases empty
-ok 130 - alias support in To header
-ok 131 - alias support in Cc header
-ok 132 - tocmd works with aliases
-ok 133 - cccmd works with aliases
-ok 134 - --[no-]xmailer without any configuration
-ok 135 - --[no-]xmailer with sendemail.xmailer=true
-ok 136 - --[no-]xmailer with sendemail.xmailer=false
-ok 137 - setup expected-list
-ok 138 - use email list in --cc --to and --bcc
-ok 139 - aliases work with email list
-ok 140 - leading and trailing whitespaces are removed
-# passed all 140 test(s)
-1..140
+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
 *** t9002-column.sh ***
 ok 1 - setup
 ok 2 - never
@@ -14425,631 +14603,139 @@
 # passed all remaining 5 test(s)
 1..6
 *** t9100-git-svn-basic.sh ***
-define NO_SVN_TESTS to skip git svn tests
-# UTF-8 locale not set, some tests skipped (C)
-ok 1 - initialize git svn
-ok 2 - import an SVN revision into git
-ok 3 - checkout from svn
-ok 4 - try a deep --rmdir with a commit
-ok 5 - detect node change from file to directory #1
-ok 6 - detect node change from directory to file #1
-ok 7 - detect node change from file to directory #2
-ok 8 - detect node change from directory to file #2
-ok 9 - remove executable bit from a file
-ok 10 - add executable bit back file
-ok 11 - executable file becomes a symlink to file
-ok 12 - new symlink is added to a file that was also just made executable
-ok 13 - modify a symlink to become a file
-ok 14 # skip commit with UTF-8 message: locale: C (missing UTF8)
-ok 15 - test fetch functionality (svn => git) with alternate GIT_SVN_ID
-ok 16 - check imported tree checksums expected tree checksums
-ok 17 - exit if remote refs are ambigious
-ok 18 - exit if init-ing a would clobber a URL
-ok 19 - init allows us to connect to another directory in the same repo
-ok 20 - dcommit $rev does not clobber current branch
-ok 21 - able to dcommit to a subdirectory
-ok 22 - dcommit should not fail with a touched file
-ok 23 - rebase should not fail with a touched file
-ok 24 - able to set-tree to a subdirectory
-ok 25 - git-svn works in a bare repository
-ok 26 - git-svn works in in a repository with a gitdir: link
-# passed all 26 test(s)
-1..26
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9101-git-svn-props.sh ***
-ok 1 - checkout working copy from svn
-ok 2 - setup some commits to svn
-ok 3 - initialize git svn
-ok 4 - fetch revisions from svn
-ok 5 - test svn:keywords ignoring
-ok 6 - raw $Id$ found in kw.c
-ok 7 - propset CR on crlf files
-ok 8 - fetch and pull latest from svn and checkout a new wc
-ok 9 - Comparing crlf
-ok 10 - Comparing ne_crlf
-ok 11 - Comparing lf
-ok 12 - Comparing ne_lf
-ok 13 - Comparing cr
-ok 14 - Comparing ne_cr
-ok 15 - Comparing empty_cr
-ok 16 - Comparing empty_lf
-ok 17 - Comparing empty
-ok 18 - Comparing empty_crlf
-ok 19 - Set CRLF on cr files
-ok 20 - fetch and pull latest from svn
-ok 21 - CRLF + $Id$
-ok 22 - CRLF + $Id$ (no newline)
-ok 23 - test show-ignore
-ok 24 - test create-ignore
-ok 25 - test propget
-ok 26 - test proplist
-# passed all 26 test(s)
-1..26
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9102-git-svn-deep-rmdir.sh ***
-ok 1 - initialize repo
-ok 2 - mirror via git svn
-ok 3 - Try a commit on rmdir
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9103-git-svn-tracked-directory-removed.sh ***
-ok 1 - make history for tracking
-ok 2 - clone repo with git
-ok 3 - make sure r2 still has old file
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9104-git-svn-follow-parent.sh ***
-ok 1 - initialize repo
-ok 2 - init and fetch a moved directory
-ok 3 - init and fetch from one svn-remote
-ok 4 - follow deleted parent
-ok 5 - follow larger parent
-ok 6 - follow higher-level parent
-ok 7 - follow deleted directory
-ok 8 - follow-parent avoids deleting relevant info
-ok 9 - track initial change if it was only made to parent
-ok 10 - follow-parent is atomic
-ok 11 - track multi-parent paths
-ok 12 - multi-fetch continues to work
-ok 13 - multi-fetch works off a 'clean' repository
-# passed all 13 test(s)
-1..13
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9105-git-svn-commit-diff.sh ***
-ok 1 - initialize repo
-ok 2 - test the commit-diff command
-ok 3 - commit-diff to a sub-directory (with git svn config)
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9106-git-svn-commit-diff-clobber.sh ***
-ok 1 - initialize repo
-ok 2 - commit change from svn side
-ok 3 - commit conflicting change from git
-ok 4 - commit complementing change from git
-ok 5 - dcommit fails to commit because of conflict
-ok 6 - dcommit does the svn equivalent of an index merge
-ok 7 - commit another change from svn side
-ok 8 - multiple dcommit from git svn will not clobber svn
-ok 9 - check that rebase really failed
-ok 10 - resolve, continue the rebase and dcommit
-# passed all 10 test(s)
-1..10
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9107-git-svn-migrate.sh ***
-ok 1 - setup old-looking metadata
-ok 2 - git-svn-HEAD is a real HEAD
-ok 3 - initialize old-style (v0) git svn layout
-ok 4 - initialize a multi-repository repo
-ok 5 - multi-fetch works on partial urls + paths
-ok 6 - migrate --minimize on old inited layout
-ok 7 - .rev_db auto-converted to .rev_map.UUID
-# passed all 7 test(s)
-1..7
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9108-git-svn-glob.sh ***
-ok 1 - test refspec globbing
-ok 2 - test left-hand-side only globbing
-ok 3 - test disallow multi-globs
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9109-git-svn-multi-glob.sh ***
-ok 1 - test refspec globbing
-ok 2 - test left-hand-side only globbing
-ok 3 - test another branch
-ok 4 - test disallow multiple globs
-# passed all 4 test(s)
-1..4
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9110-git-svn-use-svm-props.sh ***
-ok 1 - load svm repo
-ok 2 - verify metadata for /bar
-ok 3 - verify metadata for /dir/a/b/c/d/e
-ok 4 - verify metadata for /dir
-ok 5 - find commit based on SVN revision number
-ok 6 - empty rebase
-# passed all 6 test(s)
-1..6
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9111-git-svn-use-svnsync-props.sh ***
-ok 1 - load svnsync repo
-ok 2 - verify metadata for /bar
-ok 3 - verify metadata for /dir/a/b/c/d/e
-ok 4 - verify metadata for /dir
-# passed all 4 test(s)
-1..4
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9112-git-svn-md5less-file.sh ***
-ok 1 - load svn dumpfile
-ok 2 - initialize git svn
-ok 3 - fetch revisions from svn
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9113-git-svn-dcommit-new-file.sh ***
-1..0 # SKIP skipping svnserve test. (set $SVNSERVE_PORT to enable)
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9114-git-svn-dcommit-merge.sh ***
-ok 1 - setup svn repository
-ok 2 - setup git mirror and merge
-ok 3 - verify pre-merge ancestry
-ok 4 - git svn dcommit merges
-ok 5 - verify post-merge ancestry
-ok 6 - verify merge commit message
-# passed all 6 test(s)
-1..6
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9115-git-svn-dcommit-funky-renames.sh ***
-ok 1 - load repository with strange names
-ok 2 - init and fetch repository
-ok 3 - create file in existing ugly and empty dir
-ok 4 - rename ugly file
-ok 5 - rename pretty file
-ok 6 - rename pretty file into ugly one
-ok 7 - add a file with plus signs
-ok 8 - clone the repository to test rebase
-ok 9 - make a commit to test rebase
-ok 10 - git svn rebase works inside a fresh-cloned repository
-# passed all 10 test(s)
-1..10
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9116-git-svn-log.sh ***
-ok 1 - setup repository and import
-ok 2 - run log
-ok 3 - run log against a from trunk
-ok 4 - test ascending revision range
-ok 5 - test ascending revision range with --show-commit
-ok 6 - test ascending revision range with --show-commit (sha1)
-ok 7 - test descending revision range
-ok 8 - test ascending revision range with unreachable revision
-ok 9 - test descending revision range with unreachable revision
-ok 10 - test ascending revision range with unreachable upper boundary revision and 1 commit
-ok 11 - test descending revision range with unreachable upper boundary revision and 1 commit
-ok 12 - test ascending revision range with unreachable lower boundary revision and 1 commit
-ok 13 - test descending revision range with unreachable lower boundary revision and 1 commit
-ok 14 - test ascending revision range with unreachable boundary revisions and no commits
-ok 15 - test descending revision range with unreachable boundary revisions and no commits
-ok 16 - test ascending revision range with unreachable boundary revisions and 1 commit
-ok 17 - test descending revision range with unreachable boundary revisions and 1 commit
-# passed all 17 test(s)
-1..17
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9117-git-svn-init-clone.sh ***
-ok 1 - setup svnrepo
-ok 2 - basic clone
-ok 3 - clone to target directory
-ok 4 - clone with --stdlayout
-ok 5 - clone to target directory with --stdlayout
-ok 6 - init without -s/-T/-b/-t does not warn
-ok 7 - clone without -s/-T/-b/-t does not warn
-ok 8 - init with -s/-T/-b/-t assumes --prefix=origin/
-ok 9 - clone with -s/-T/-b/-t assumes --prefix=origin/
-ok 10 - init with -s/-T/-b/-t and --prefix "" still works
-ok 11 - clone with -s/-T/-b/-t and --prefix "" still works
-# passed all 11 test(s)
-1..11
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9118-git-svn-funky-branch-names.sh ***
-ok 1 - setup svnrepo
-ok 2 - test clone with funky branch names
-ok 3 - test dcommit to funky branch
-ok 4 - test dcommit to scary branch
-ok 5 - test dcommit to trailing_dotlock branch
-# passed all 5 test(s)
-1..5
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9119-git-svn-info.sh ***
-1..0 # SKIP skipping svn-info test (SVN version: 1.7.20 not supported)
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9120-git-svn-clone-with-percent-escapes.sh ***
-ok 1 - setup svnrepo
-ok 2 - test clone with percent escapes
-ok 3 - svn checkout with percent escapes
-ok 4 - svn checkout with space
-ok 5 - test clone trunk with percent escapes and minimize-url
-ok 6 - test clone trunk with percent escapes
-ok 7 - test clone --stdlayout with percent escapes
-ok 8 - test clone -s with unescaped space
-# passed all 8 test(s)
-1..8
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9121-git-svn-fetch-renamed-dir.sh ***
-ok 1 - load repository with renamed directory
-ok 2 - init and fetch repository
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9122-git-svn-author.sh ***
-ok 1 - setup svn repository
-ok 2 - interact with it via git svn
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9123-git-svn-rebuild-with-rewriteroot.sh ***
-ok 1 - init, fetch and checkout repository
-ok 2 - remove rev_map
-ok 3 - rebuild rev_map
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9124-git-svn-dcommit-auto-props.sh ***
-ok 1 - initialize git svn
-ok 2 - enable auto-props config
-ok 3 - add files matching auto-props
-ok 4 - disable auto-props config
-ok 5 - add files matching disabled auto-props
-ok 6 - check resulting svn repository
-ok 7 - check renamed file
-# passed all 7 test(s)
-1..7
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9125-git-svn-multi-glob-branch-names.sh ***
-ok 1 - setup svnrepo
-ok 2 - test clone with multi-glob in branch names
-ok 3 - test dcommit to multi-globbed branch
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9126-git-svn-follow-deleted-readded-directory.sh ***
-1..0 # SKIP skipping svnserve test. (set $SVNSERVE_PORT to enable)
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9127-git-svn-partial-rebuild.sh ***
-ok 1 - initialize svnrepo
-ok 2 - import an early SVN revision into git
-ok 3 - make full git mirror of SVN
-ok 4 - fetch from git mirror and partial-rebuild
-# passed all 4 test(s)
-1..4
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9128-git-svn-cmd-branch.sh ***
-ok 1 - initialize svnrepo
-ok 2 - import into git
-ok 3 - git svn branch tests
-ok 4 - branch uses correct svn-remote
-# passed all 4 test(s)
-1..4
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9129-git-svn-i18n-commitencoding.sh ***
-ok 1 - ISO8859-1 setup
-ok 2 - eucJP setup
-ok 3 - ISO-2022-JP setup
-ok 4 - ISO8859-1 commit on git side
-ok 5 - eucJP commit on git side
-ok 6 - ISO-2022-JP commit on git side
-ok 7 - ISO8859-1 dcommit to svn
-ok 8 - eucJP dcommit to svn
-ok 9 - ISO-2022-JP dcommit to svn
-ok 10 - ISO-8859-1 should match UTF-8 in svn
-ok 11 - eucJP should match UTF-8 in svn
-ok 12 - ISO-2022-JP should match UTF-8 in svn
-# passed all 12 test(s)
-1..12
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9130-git-svn-authors-file.sh ***
-ok 1 - setup svnrepo
-ok 2 - start import with incomplete authors file
-ok 3 - imported 2 revisions successfully
-ok 4 - continues to import once authors have been added
-ok 5 - authors-file against globs
-ok 6 - fetch fails on ee
-ok 7 - failure happened without negative side effects
-ok 8 - fetch continues after authors-file is fixed
-ok 9 - fresh clone with svn.authors-file in config
-# passed all 9 test(s)
-1..9
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9131-git-svn-empty-symlink.sh ***
-ok 1 - load svn dumpfile
-ok 2 - clone using git svn
-ok 3 - enable broken symlink workaround
-ok 4 - "bar" is an empty file
-ok 5 - get "bar" => symlink fix from svn
-ok 6 - "bar" becomes a symlink
-ok 7 - clone using git svn
-ok 8 - disable broken symlink workaround
-ok 9 - "bar" is an empty file
-ok 10 - get "bar" => symlink fix from svn
-ok 11 - "bar" does not become a symlink
-ok 12 - clone using git svn
-ok 13 - "bar" is an empty file
-ok 14 - get "bar" => symlink fix from svn
-ok 15 - "bar" does not become a symlink
-# passed all 15 test(s)
-1..15
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9132-git-svn-broken-symlink.sh ***
-ok 1 - load svn dumpfile
-ok 2 - clone using git svn
-ok 3 - "bar" is a symlink that points to "asdf"
-ok 4 - get "bar" => symlink fix from svn
-ok 5 - "bar" remains a proper symlink
-# passed all 5 test(s)
-1..5
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9133-git-svn-nested-git-repo.sh ***
-ok 1 - setup repo with a git repo inside it
-ok 2 - clone an SVN repo containing a git repo
-ok 3 - SVN-side change outside of .git
-ok 4 - update git svn-cloned repo
-ok 5 - SVN-side change inside of .git
-ok 6 - update git svn-cloned repo
-ok 7 - SVN-side change in and out of .git
-ok 8 - update git svn-cloned repo again
-# passed all 8 test(s)
-1..8
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9134-git-svn-ignore-paths.sh ***
-ok 1 - setup test repository
-ok 2 - clone an SVN repository with ignored www directory
-ok 3 - init+fetch an SVN repository with ignored www directory
-ok 4 - verify ignore-paths config saved by clone
-ok 5 - SVN-side change outside of www
-ok 6 - update git svn-cloned repo (config ignore)
-ok 7 - update git svn-cloned repo (option ignore)
-ok 8 - SVN-side change inside of ignored www
-ok 9 - update git svn-cloned repo (config ignore)
-ok 10 - update git svn-cloned repo (option ignore)
-ok 11 - SVN-side change in and out of ignored www
-ok 12 - update git svn-cloned repo again (config ignore)
-ok 13 - update git svn-cloned repo again (option ignore)
-# passed all 13 test(s)
-1..13
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9135-git-svn-moved-branch-empty-file.sh ***
-ok 1 - load svn dumpfile
-ok 2 - clone using git svn
-ok 3 - test that b1 exists and is empty
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9136-git-svn-recreated-branch-empty-file.sh ***
-ok 1 - load svn dumpfile
-ok 2 - clone using git svn
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9137-git-svn-dcommit-clobber-series.sh ***
-ok 1 - initialize repo
-ok 2 - (supposedly) non-conflicting change from SVN
-ok 3 - some unrelated changes to git
-ok 4 - change file but in unrelated area
-ok 5 - attempt to dcommit with a dirty index
-# passed all 5 test(s)
-1..5
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9138-git-svn-authors-prog.sh ***
-ok 1 - svn-authors setup
-ok 2 - setup svnrepo
-ok 3 - import authors with prog and file
-ok 4 - imported 6 revisions successfully
-ok 5 - authors-prog ran correctly
-ok 6 - authors-file overrode authors-prog
-ok 7 - authors-prog handled special characters in username
-# passed all 7 test(s)
-1..7
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9139-git-svn-non-utf8-commitencoding.sh ***
-ok 1 - ISO8859-1 setup
-ok 2 - eucJP setup
-ok 3 - ISO8859-1 commit on git side
-ok 4 - eucJP commit on git side
-ok 5 - ISO8859-1 dcommit to svn
-ok 6 - eucJP dcommit to svn
-# passed all 6 test(s)
-1..6
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9140-git-svn-reset.sh ***
-ok 1 - setup test repository
-ok 2 - clone SVN repository with hidden directory
-ok 3 - modify hidden file in SVN repo
-ok 4 - fetch fails on modified hidden file
-ok 5 - reset unwinds back to r1
-ok 6 - refetch succeeds not ignoring any files
-# passed all 6 test(s)
-1..6
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9141-git-svn-multiple-branches.sh ***
-ok 1 - setup svnrepo
-ok 2 - clone multiple branch and tag paths
-ok 3 - Multiple branch or tag paths require -d
-ok 4 - create new branches and tags
-# passed all 4 test(s)
-1..4
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9142-git-svn-shallow-clone.sh ***
-ok 1 - setup test repository
-ok 2 - clone trunk with "-r HEAD"
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9143-git-svn-gc.sh ***
-ok 1 - setup directories and test repo
-ok 2 - checkout working copy from svn
-ok 3 - set some properties to create an unhandled.log file
-ok 4 - Setup repo
-ok 5 - Fetch repo
-ok 6 - make backup copy of unhandled.log
-ok 7 - create leftover index
-ok 8 - git svn gc runs
-ok 9 - git svn index removed
-ok 10 - git svn gc produces a valid gzip file
-ok 11 - git svn gc does not change unhandled.log files
-# passed all 11 test(s)
-1..11
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9144-git-svn-old-rev_map.sh ***
-ok 1 - setup test repository with old layout
-ok 2 - old layout continues to work
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9145-git-svn-master-branch.sh ***
-ok 1 - setup test repository
-ok 2 - git svn clone --stdlayout sets up trunk as master
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9146-git-svn-empty-dirs.sh ***
-ok 1 - initialize repo
-ok 2 - clone
-ok 3 - empty directories exist
-ok 4 - option automkdirs set to false
-ok 5 - more emptiness
-ok 6 - git svn rebase creates empty directory
-ok 7 - git svn mkdirs recreates empty directories
-ok 8 - git svn mkdirs -r works
-ok 9 - initialize trunk
-ok 10 - clone trunk
-ok 11 - empty directories in trunk exist
-ok 12 - remove a top-level directory from svn
-ok 13 - removed top-level directory does not exist
-ok 14 - git svn gc-ed files work
-# passed all 14 test(s)
-1..14
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9147-git-svn-include-paths.sh ***
-ok 1 - setup test repository
-ok 2 - clone an SVN repository with filter to include qqq directory
-ok 3 - init+fetch an SVN repository with included qqq directory
-ok 4 - verify include-paths config saved by clone
-ok 5 - SVN-side change outside of www
-ok 6 - update git svn-cloned repo (config include)
-ok 7 - update git svn-cloned repo (option include)
-ok 8 - SVN-side change inside of ignored www
-ok 9 - update git svn-cloned repo (config include)
-ok 10 - update git svn-cloned repo (option include)
-ok 11 - SVN-side change in and out of included qqq
-ok 12 - update git svn-cloned repo again (config include)
-ok 13 - update git svn-cloned repo again (option include)
-# passed all 13 test(s)
-1..13
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9148-git-svn-propset.sh ***
-ok 1 - initialize git svn
-ok 2 - fetch revisions from svn
-ok 3 - add props top level
-ok 4 - add multiple props
-ok 5 - add props subdir
-ok 6 - add props relative
-# passed all 6 test(s)
-1..6
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9150-svk-mergetickets.sh ***
-ok 1 - load svk depot
-ok 2 - svk merges were represented coming in
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9151-svn-mergeinfo.sh ***
-ok 1 - load svn dump
-ok 2 - all svn merges became git merge commits
-ok 3 - cherry picks did not become git merge commits
-ok 4 - svn non-merge merge commits did not become git merge commits
-ok 5 - commit made to merged branch is reachable from the merge
-ok 6 - merging two branches in one commit is detected correctly
-not ok 7 - everything got merged in the end # TODO known breakage
-# still have 1 known breakage(s)
-# passed all remaining 6 test(s)
-1..7
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9152-svn-empty-dirs-after-gc.sh ***
-ok 1 - initialize repo
-ok 2 - clone
-ok 3 - git svn gc runs
-ok 4 - git svn mkdirs recreates empty directories after git svn gc
-# passed all 4 test(s)
-1..4
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9153-git-svn-rewrite-uuid.sh ***
-ok 1 - load svn repo
-ok 2 - verify uuid
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9154-git-svn-fancy-glob.sh ***
-ok 1 - load svn repo
-ok 2 - add red branch
-ok 3 - add gre branch
-ok 4 - add green branch
-ok 5 - add all branches
-# passed all 5 test(s)
-1..5
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9155-git-svn-fetch-deleted-tag.sh ***
-ok 1 - setup svn repo
-ok 2 - fetch deleted tags from same revision with checksum error
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9156-git-svn-fetch-deleted-tag-2.sh ***
-ok 1 - setup svn repo
-ok 2 - fetch deleted tags from same revision with no checksum error
-# passed all 2 test(s)
-1..2
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9157-git-svn-fetch-merge.sh ***
-ok 1 - initialize source svn repo
-ok 2 - clone svn repo
-ok 3 - verify merge commit
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9158-git-svn-mergeinfo.sh ***
-define NO_SVN_TESTS to skip git svn tests
-ok 1 - initialize source svn repo
-ok 2 - clone svn repo
-ok 3 - change svn:mergeinfo
-ok 4 - verify svn:mergeinfo
-ok 5 - change svn:mergeinfo multiline
-ok 6 - verify svn:mergeinfo multiline
-# passed all 6 test(s)
-1..6
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9159-git-svn-no-parent-mergeinfo.sh ***
-ok 1 - test handling of root commits in merge ranges
-# passed all 1 test(s)
-1..1
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9160-git-svn-preserve-empty-dirs.sh ***
-define NO_SVN_TESTS to skip git svn tests
-ok 1 - initialize source svn repo containing empty dirs
-ok 2 - clone svn repo with --preserve-empty-dirs
-ok 3 - directory empty from inception
-ok 4 - directory empty from subsequent svn commit
-ok 5 - add entry to previously empty directory
-ok 6 - remove non-last entry from directory
-ok 7 - clone svn repo with --placeholder-file specified
-ok 8 - placeholder namespace conflict with file
-ok 9 - placeholder namespace conflict with directory
-ok 10 - second set of svn commits and rebase
-ok 11 - flag persistence during subsqeuent rebase
-ok 12 - placeholder list persistence during subsqeuent rebase
-# passed all 12 test(s)
-1..12
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9161-git-svn-mergeinfo-push.sh ***
-ok 1 - load svn dump
-ok 2 - propagate merge information
-ok 3 - check svn:mergeinfo
-ok 4 - merge another branch
-ok 5 - check primary parent mergeinfo respected
-ok 6 - merge existing merge
-ok 7 - check both parents' mergeinfo respected
-ok 8 - make further commits to branch
-ok 9 - second forward merge
-ok 10 - check new mergeinfo added
-ok 11 - reintegration merge
-ok 12 - check reintegration mergeinfo
-ok 13 - dcommit a merge at the top of a stack
-# passed all 13 test(s)
-1..13
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9162-git-svn-dcommit-interactive.sh ***
-ok 1 - initialize repo
-ok 2 - answers: y [\n] yes
-ok 3 - answers: yes yes no
-ok 4 - answers: yes quit
-ok 5 - answers: all
-# passed all 5 test(s)
-1..5
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9163-git-svn-reset-clears-caches.sh ***
-ok 1 - initialize source svn repo
-ok 2 - fetch to merge-base (a)
-ok 3 - rebase looses SVN merge (m)
-ok 4 - reset and fetch gets the SVN merge (m) correctly
-# passed all 4 test(s)
-1..4
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9164-git-svn-dcommit-concurrent.sh ***
-ok 1 - setup svn repository
-ok 2 - check if post-commit hook creates a concurrent commit
-ok 3 - check if pre-commit hook fails
-ok 4 - dcommit error handling
-ok 5 - dcommit concurrent change in non-changed file
-ok 6 - dcommit concurrent non-conflicting change
-ok 7 - dcommit --no-rebase concurrent non-conflicting change
-ok 8 - dcommit fails on concurrent conflicting change
-# passed all 8 test(s)
-1..8
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9165-git-svn-fetch-merge-branch-of-branch.sh ***
-ok 1 - initialize source svn repo
-ok 2 - clone svn repo
-ok 3 - verify merge commit
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9166-git-svn-fetch-merge-branch-of-branch2.sh ***
-ok 1 - initialize source svn repo
-ok 2 - clone svn repo
-ok 3 - verify merge commit
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9167-git-svn-cmd-branch-subproject.sh ***
-ok 1 - initialize svnrepo
-ok 2 - import into git
-ok 3 - git svn branch tests
-# passed all 3 test(s)
-1..3
+1..0 # SKIP Perl SVN libraries not found or unusable
 *** t9200-git-cvsexportcommit.sh ***
 ok 1 - New file
 ok 2 - Remove two files, add two and update two
@@ -15328,197 +15014,11 @@
 *** t9402-git-cvsserver-refs.sh ***
 1..0 # SKIP skipping git-cvsserver tests, Perl SQLite interface unavailable
 *** t9500-gitweb-standalone-no-errors.sh ***
-ok 1 - no commits: projects_list (implicit)
-ok 2 - no commits: projects_index
-ok 3 - no commits: .git summary (implicit)
-ok 4 - no commits: .git commit (implicit HEAD)
-ok 5 - no commits: .git commitdiff (implicit HEAD)
-ok 6 - no commits: .git tree (implicit HEAD)
-ok 7 - no commits: .git heads
-ok 8 - no commits: .git tags
-ok 9 - Make initial commit
-ok 10 - projects_list (implicit)
-ok 11 - projects_index
-ok 12 - .git summary (implicit)
-ok 13 - .git commit (implicit HEAD)
-ok 14 - .git commitdiff (implicit HEAD, root commit)
-ok 15 - .git commitdiff_plain (implicit HEAD, root commit)
-ok 16 - .git commit (HEAD)
-ok 17 - .git tree (implicit HEAD)
-ok 18 - .git blob (file)
-ok 19 - .git blob_plain (file)
-ok 20 - .git commit (non-existent)
-ok 21 - .git commitdiff (non-existent)
-ok 22 - .git commitdiff (non-existent vs HEAD)
-ok 23 - .git tree (0000000000000000000000000000000000000000)
-ok 24 - .git tag (0000000000000000000000000000000000000000)
-ok 25 - .git blob (non-existent)
-ok 26 - .git blob_plain (non-existent)
-ok 27 - commitdiff(0): root
-ok 28 - commitdiff(0): file added
-ok 29 - commitdiff(0): mode change
-ok 30 - commitdiff(0): file renamed
-ok 31 - commitdiff(0): file to symlink
-ok 32 - commitdiff(0): file deleted
-ok 33 - commitdiff(0): file copied / new file
-ok 34 - commitdiff(0): mode change and modified
-ok 35 - commitdiff(0): renamed and modified
-ok 36 - commitdiff(0): renamed, mode change and modified
-ok 37 - setup typechange commits
-ok 38 - commitdiff(2): file renamed from foo to foo/baz
-ok 39 - commitdiff(2): file renamed from foo/baz to foo
-ok 40 - commitdiff(2): directory becomes file
-ok 41 - commitdiff(2): file becomes directory
-ok 42 - commitdiff(2): file becomes symlink
-ok 43 - commitdiff(2): symlink becomes file
-ok 44 - commitdiff(2): symlink becomes directory
-ok 45 - commitdiff(2): directory becomes symlink
-not ok 46 - setup incomplete lines
-#	
-#		cat >file<<-\EOF &&
-#		Dominus regit me,
-#		et nihil mihi deerit.
-#		In loco pascuae ibi me collocavit,
-#		super aquam refectionis educavit me;
-#		animam meam convertit,
-#		deduxit me super semitas jusitiae,
-#		propter nomen suum.
-#		CHANGE_ME
-#		EOF
-#		git commit -a -m "Preparing for incomplete lines" &&
-#		echo "incomplete" | tr -d "\\012" >>file &&
-#		git commit -a -m "Add incomplete line" &&
-#		git tag incomplete_lines_add &&
-#		sed -e s/CHANGE_ME/change_me/ <file >file+ &&
-#		mv -f file+ file &&
-#		git commit -a -m "Incomplete context line" &&
-#		git tag incomplete_lines_ctx &&
-#		echo "Dominus regit me," >file &&
-#		echo "incomplete line" | tr -d "\\012" >>file &&
-#		git commit -a -m "Change incomplete line" &&
-#		git tag incomplete_lines_chg &&
-#		echo "Dominus regit me," >file &&
-#		git commit -a -m "Remove incomplete line" &&
-#		git tag incomplete_lines_rem
-#	
-ok 47 - commitdiff(1): addition of incomplete line
-ok 48 - commitdiff(1): incomplete line as context line
-ok 49 - commitdiff(1): change incomplete line
-ok 50 - commitdiff(1): removal of incomplete line
-ok 51 - Create a merge
-ok 52 - commit(0): merge commit
-ok 53 - commitdiff(0): merge commit
-ok 54 - Prepare large commit
-ok 55 - commit(1): large commit
-ok 56 - commitdiff(1): large commit
-ok 57 - side-by-side: addition of incomplete line
-ok 58 - side-by-side: incomplete line as context line
-ok 59 - side-by-side: changed incomplete line
-ok 60 - side-by-side: removal of incomplete line
-ok 61 - side-by-side: merge commit
-ok 62 - tags: list of different types of tags
-ok 63 - tag: Tag to commit object
-ok 64 - tag: on lightweight tag (invalid)
-ok 65 - logs: log (implicit HEAD)
-ok 66 - logs: shortlog (implicit HEAD)
-ok 67 - logs: history (implicit HEAD, file)
-ok 68 - logs: history (implicit HEAD, non-existent file)
-ok 69 - logs: history (implicit HEAD, deleted file)
-ok 70 - path_info: project
-ok 71 - path_info: project/branch
-ok 72 - path_info: project/branch:file
-ok 73 - path_info: project/branch:dir/
-ok 74 - path_info: project/branch (non-existent)
-ok 75 - path_info: project/branch:filename (non-existent branch)
-ok 76 - path_info: project/branch:file (non-existent)
-ok 77 - path_info: project/branch:dir/ (non-existent)
-ok 78 - path_info: project/branch:/file
-ok 79 - path_info: project/:/file (implicit HEAD)
-ok 80 - path_info: project/:/ (implicit HEAD, top tree)
-ok 81 - feeds: OPML
-ok 82 - feed: RSS
-ok 83 - feed: Atom
-ok 84 - encode(commit): utf8
-ok 85 - encode(commit): iso-8859-1
-ok 86 - encode(log): utf-8 and iso-8859-1
-ok 87 - opt: log --no-merges
-ok 88 - opt: atom --no-merges
-ok 89 - opt: "file" history --no-merges
-ok 90 - opt: log --no-such-option (invalid option)
-ok 91 - opt: tree --no-merges (invalid option for action)
-ok 92 - URL: no project URLs, no base URL
-ok 93 - URL: project URLs via gitweb.url
-ok 94 - URL: project URLs via cloneurl file
-ok 95 - config override: projects list (implicit)
-ok 96 - config override: tree view, features not overridden in repo config
-ok 97 - config override: tree view, features disabled in repo config
-ok 98 - config override: tree view, features enabled in repo config (1)
-ok 99 - config override: tree view, features enabled in repo config (2)
-ok 100 - search: preparation
-ok 101 - search: commit author
-ok 102 - search: commit message
-ok 103 - search: grep
-ok 104 - search: pickaxe
-ok 105 - search: projects
-ok 106 - README.html with non-ASCII characters (utf-8)
-Skipping syntax highlighting tests: 'highlight' not found
-ok 107 # skip syntax highlighting (no highlight, unknown syntax) (missing HIGHLIGHT)
-ok 108 # skip syntax highlighting (highlighted, shell script) (missing HIGHLIGHT)
-ok 109 - forks: prepare
-ok 110 - forks: projects list
-ok 111 - forks: forks action
-ok 112 - ctags: tag cloud in projects list
-ok 113 - ctags: search projects by existing tag
-ok 114 - ctags: search projects by non existent tag
-ok 115 - ctags: malformed tag weights
-ok 116 - categories: projects list, only default category
-ok 117 - unborn HEAD: "summary" page (with "heads" subview)
-# failed 1 among 117 test(s)
-1..117
-make[3]: [t9500-gitweb-standalone-no-errors.sh] Error 1 (ignored)
+1..0 # SKIP skipping gitweb tests, CGI module unusable
 *** t9501-gitweb-standalone-http-status.sh ***
-ok 1 - setup
-ok 2 - snapshots: tgz only default format enabled
-ok 3 - snapshots: all enabled in default, use default disabled value
-ok 4 - snapshots: zip explicitly disabled
-ok 5 - snapshots: tgz explicitly enabled
-ok 6 - snapshots: good tree-ish id
-ok 7 - snapshots: bad tree-ish id
-ok 8 - snapshots: bad tree-ish id (tagged object)
-ok 9 - snapshots: good object id
-ok 10 - snapshots: bad object id
-ok 11 # skip modification: feed last-modified (missing DATE_PARSER)
-ok 12 # skip modification: feed if-modified-since (modified) (missing DATE_PARSER)
-ok 13 # skip modification: feed if-modified-since (unmodified) (missing DATE_PARSER)
-ok 14 # skip modification: snapshot last-modified (missing DATE_PARSER)
-ok 15 # skip modification: snapshot if-modified-since (modified) (missing DATE_PARSER)
-ok 16 # skip modification: snapshot if-modified-since (unmodified) (missing DATE_PARSER)
-ok 17 # skip modification: tree snapshot (missing DATE_PARSER)
-ok 18 - load checking: load too high (default action)
-ok 19 - invalid arguments: invalid regexp (in project search)
-# passed all 19 test(s)
-1..19
+1..0 # SKIP skipping gitweb tests, CGI module unusable
 *** t9502-gitweb-standalone-parse-output.sh ***
-ok 1 - setup
-ok 2 - snapshot: full sha1
-ok 3 - snapshot: shortened sha1
-ok 4 - snapshot: almost full sha1
-ok 5 - snapshot: HEAD
-ok 6 - snapshot: short branch name (master)
-ok 7 - snapshot: short tag name (first)
-ok 8 - snapshot: full branch name (refs/heads/master)
-ok 9 - snapshot: full tag name (refs/tags/first)
-ok 10 - snapshot: hierarchical branch name (xx/test)
-ok 11 - forks: setup
-ok 12 - forks: not skipped unless "forks" feature enabled
-ok 13 - enable forks feature
-ok 14 - forks: forks skipped if "forks" feature enabled
-ok 15 - forks: "forks" action for forked repository
-ok 16 - forks: can access forked repository
-ok 17 - forks: project_index lists all projects (incl. forks)
-ok 18 - xss checks
-# passed all 18 test(s)
-1..18
+1..0 # SKIP skipping gitweb tests, CGI module unusable
 *** t9600-cvsimport.sh ***
 1..0 # SKIP skipping cvsimport tests, cvsps not found
 *** t9601-cvsimport-vendor-branch.sh ***
@@ -15622,6 +15122,16 @@
 1..0 # SKIP skipping git p4 tests; no p4 or p4d
 *** t9821-git-p4-path-variations.sh ***
 1..0 # SKIP skipping git p4 tests; no p4 or p4d
+*** t9822-git-p4-path-encoding.sh ***
+1..0 # SKIP skipping git p4 tests; no p4 or p4d
+*** t9823-git-p4-mock-lfs.sh ***
+1..0 # SKIP skipping git p4 tests; no p4 or p4d
+*** t9824-git-p4-git-lfs.sh ***
+1..0 # SKIP skipping git p4 tests; no p4 or p4d
+*** t9825-git-p4-handle-utf16-without-bom.sh ***
+1..0 # SKIP skipping git p4 tests; no p4 or p4d
+*** t9826-git-p4-keep-empty-commits.sh ***
+1..0 # SKIP skipping git p4 tests; no p4 or p4d
 *** t9901-git-web--browse.sh ***
 ok 1 - URL with an ampersand in it
 ok 2 - URL with a semi-colon in it
@@ -15706,69 +15216,56 @@
 ok 21 - prompt - dirty status indicator - dirty worktree
 ok 22 - prompt - dirty status indicator - dirty index
 ok 23 - prompt - dirty status indicator - dirty index and worktree
-ok 24 - prompt - dirty status indicator - before root commit
-ok 25 - prompt - dirty status indicator - shell variable unset with config disabled
-ok 26 - prompt - dirty status indicator - shell variable unset with config enabled
-ok 27 - prompt - dirty status indicator - shell variable set with config disabled
-ok 28 - prompt - dirty status indicator - shell variable set with config enabled
-ok 29 - prompt - dirty status indicator - not shown inside .git directory
-ok 30 - prompt - stash status indicator - no stash
-ok 31 - prompt - stash status indicator - stash
-ok 32 - prompt - stash status indicator - not shown inside .git directory
-ok 33 - prompt - untracked files status indicator - no untracked files
-ok 34 - prompt - untracked files status indicator - untracked files
-ok 35 - prompt - untracked files status indicator - empty untracked dir
-ok 36 - prompt - untracked files status indicator - non-empty untracked dir
-ok 37 - prompt - untracked files status indicator - untracked files outside cwd
-ok 38 - prompt - untracked files status indicator - shell variable unset with config disabled
-ok 39 - prompt - untracked files status indicator - shell variable unset with config enabled
-ok 40 - prompt - untracked files status indicator - shell variable set with config disabled
-ok 41 - prompt - untracked files status indicator - shell variable set with config enabled
-ok 42 - prompt - untracked files status indicator - not shown inside .git directory
-ok 43 - prompt - format string starting with dash
-ok 44 - prompt - pc mode
-ok 45 - prompt - bash color pc mode - branch name
-ok 46 - prompt - bash color pc mode - detached head
-ok 47 - prompt - bash color pc mode - dirty status indicator - dirty worktree
-ok 48 - prompt - bash color pc mode - dirty status indicator - dirty index
-ok 49 - prompt - bash color pc mode - dirty status indicator - dirty index and worktree
-ok 50 - prompt - bash color pc mode - dirty status indicator - before root commit
-ok 51 - prompt - bash color pc mode - inside .git directory
-ok 52 - prompt - bash color pc mode - stash status indicator
-ok 53 - prompt - bash color pc mode - untracked files status indicator
-ok 54 - prompt - zsh color pc mode
-ok 55 - prompt - hide if pwd ignored - env var unset, config disabled
-ok 56 - prompt - hide if pwd ignored - env var unset, config disabled, pc mode
-ok 57 - prompt - hide if pwd ignored - env var unset, config unset
-ok 58 - prompt - hide if pwd ignored - env var unset, config unset, pc mode
-ok 59 - prompt - hide if pwd ignored - env var set, config disabled
-ok 60 - prompt - hide if pwd ignored - env var set, config disabled, pc mode
-ok 61 - prompt - hide if pwd ignored - env var set, config unset
-ok 62 - prompt - hide if pwd ignored - env var set, config unset, pc mode
-ok 63 - prompt - hide if pwd ignored - inside gitdir (stdout)
-ok 64 - prompt - hide if pwd ignored - inside gitdir (stderr)
-# passed all 64 test(s)
-1..64
-/usr/gnu/bin/make aggregate-results
-make[4]: Entering directory `$(@D)/t'
-for f in 'test-results'/t*-*.counts; do \
-	echo "$f"; \
-done | '/bin/bash' ./aggregate-results.sh
+ok 24 - prompt - dirty status indicator - orphan branch - clean
+ok 25 - prompt - dirty status indicator - orphan branch - dirty index
+ok 26 - prompt - dirty status indicator - orphan branch - dirty index and worktree
+ok 27 - prompt - dirty status indicator - shell variable unset with config disabled
+ok 28 - prompt - dirty status indicator - shell variable unset with config enabled
+ok 29 - prompt - dirty status indicator - shell variable set with config disabled
+ok 30 - prompt - dirty status indicator - shell variable set with config enabled
+ok 31 - prompt - dirty status indicator - not shown inside .git directory
+ok 32 - prompt - stash status indicator - no stash
+ok 33 - prompt - stash status indicator - stash
+ok 34 - prompt - stash status indicator - not shown inside .git directory
+ok 35 - prompt - untracked files status indicator - no untracked files
+ok 36 - prompt - untracked files status indicator - untracked files
+ok 37 - prompt - untracked files status indicator - empty untracked dir
+ok 38 - prompt - untracked files status indicator - non-empty untracked dir
+ok 39 - prompt - untracked files status indicator - untracked files outside cwd
+ok 40 - prompt - untracked files status indicator - shell variable unset with config disabled
+ok 41 - prompt - untracked files status indicator - shell variable unset with config enabled
+ok 42 - prompt - untracked files status indicator - shell variable set with config disabled
+ok 43 - prompt - untracked files status indicator - shell variable set with config enabled
+ok 44 - prompt - untracked files status indicator - not shown inside .git directory
+ok 45 - prompt - format string starting with dash
+ok 46 - prompt - pc mode
+ok 47 - prompt - bash color pc mode - branch name
+ok 48 - prompt - bash color pc mode - detached head
+ok 49 - prompt - bash color pc mode - dirty status indicator - dirty worktree
+ok 50 - prompt - bash color pc mode - dirty status indicator - dirty index
+ok 51 - prompt - bash color pc mode - dirty status indicator - dirty index and worktree
+ok 52 - prompt - bash color pc mode - dirty status indicator - before root commit
+ok 53 - prompt - bash color pc mode - inside .git directory
+ok 54 - prompt - bash color pc mode - stash status indicator
+ok 55 - prompt - bash color pc mode - untracked files status indicator
+ok 56 - prompt - zsh color pc mode
+ok 57 - prompt - hide if pwd ignored - env var unset, config disabled
+ok 58 - prompt - hide if pwd ignored - env var unset, config disabled, pc mode
+ok 59 - prompt - hide if pwd ignored - env var unset, config unset
+ok 60 - prompt - hide if pwd ignored - env var unset, config unset, pc mode
+ok 61 - prompt - hide if pwd ignored - env var set, config disabled
+ok 62 - prompt - hide if pwd ignored - env var set, config disabled, pc mode
+ok 63 - prompt - hide if pwd ignored - env var set, config unset
+ok 64 - prompt - hide if pwd ignored - env var set, config unset, pc mode
+ok 65 - prompt - hide if pwd ignored - inside gitdir (stdout)
+ok 66 - prompt - hide if pwd ignored - inside gitdir (stderr)
+# passed all 66 test(s)
+1..66
 
-failed test(s): t0204 t9500
+failed test(s): t0204
 
 fixed   0
-success 12879
-failed  3
-broken  178
-total   13280
-make[4]: Leaving directory `$(@D)/t'
-/usr/gnu/bin/make clean
-make[4]: Entering directory `$(@D)/t'
-rm -f -r 'trash directory'.* 'test-results'
-rm -f -r valgrind/bin
-rm -f .prove
-make[4]: Leaving directory `$(@D)/t'
-make[3]: Leaving directory `$(@D)/t'
-make[2]: Leaving directory `$(@D)/t'
-make[1]: Leaving directory `$(@D)'
+success 12748
+failed  2
+broken  182
+total   13051