Log for failed build of git-core_1:1.5.4.3-1ubuntu2 (dist=intrepid-autotest)

Build Daemon user noreply at buildd.ubuntu.com
Sat Jul 5 16:27:43 BST 2008


Automatic build of git-core_1:1.5.4.3-1ubuntu2 on king by sbuild/amd64 1.170.5
Build started at 20080705-1618
******************************************************************************
Checking available source versions...
Fetching source files...
Reading package lists...
Building dependency tree...
Reading state information...
Need to get 2094kB of source archives.
Get:1 http://archive.internal intrepid-autotest/main git-core 1:1.5.4.3-1ubuntu2 (dsc) [969B]
Get:2 http://archive.internal intrepid-autotest/main git-core 1:1.5.4.3-1ubuntu2 (tar) [1900kB]
Get:3 http://archive.internal intrepid-autotest/main git-core 1:1.5.4.3-1ubuntu2 (diff) [194kB]
Fetched 2094kB in 0s (30.7MB/s)
Download complete and in download only mode
** Using build dependencies supplied by package:
Build-Depends: asciidoc (>> 8.0.0), cvs, gettext, libcurl4-gnutls-dev | libcurl3-gnutls-dev, libdbd-sqlite3-perl, libexpat1-dev, libsvn-perl | libsvn-core-perl, libz-dev, subversion, tcl8.4, unzip, xmlto
Checking for already installed source dependencies...
asciidoc: missing
cvs: missing
gettext: missing
libcurl4-gnutls-dev: missing
libcurl3-gnutls-dev: missing
libdbd-sqlite3-perl: missing
libexpat1-dev: missing
libsvn-perl: missing
libsvn-core-perl: missing
libz-dev: missing
subversion: missing
tcl8.4: missing
unzip: missing
xmlto: missing
Checking for source dependency conflicts...
libz-dev is a virtual package provided by: zlib1g-dev
Using zlib1g-dev (only possibility)
  /usr/bin/sudo /usr/bin/apt-get --purge $CHROOT_OPTIONS -q -y install asciidoc cvs gettext libcurl4-gnutls-dev libdbd-sqlite3-perl libexpat1-dev libsvn-perl libz-dev subversion tcl8.4 unzip xmlto
Reading package lists...
Building dependency tree...
Reading state information...
Package libz-dev is a virtual package provided by:
  zlib1g-dev 1:1.2.3.3.dfsg-12ubuntu1
You should explicitly select one to install.
E: Package libz-dev has no installation candidate
libz-dev is a virtual package provided by: zlib1g-dev
Using zlib1g-dev (only possibility)
  /usr/bin/sudo /usr/bin/apt-get --purge $CHROOT_OPTIONS -q -y install asciidoc cvs gettext libcurl4-gnutls-dev libdbd-sqlite3-perl libexpat1-dev libsvn-perl subversion tcl8.4 unzip xmlto zlib1g-dev
Reading package lists...
Building dependency tree...
Reading state information...
The following packages were automatically installed and are no longer required:
  upstart-compat-sysv system-services startup-tasks sysvutils upstart
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  ca-certificates comerr-dev docbook-xml docbook-xsl gettext-base libapr1
  libaprutil1 libcurl3-gnutls libdbi-perl libexpat1 libgcrypt11
  libgcrypt11-dev libglib2.0-0 libgnutls-dev libgnutls13 libgnutls26
  libgpg-error-dev libgpg-error0 libidn11 libidn11-dev libkadm55 libkeyutils1
  libkrb5-dev libkrb53 libldap-2.4-2 libldap2-dev liblzo2-2
  libmysqlclient15off libncursesw5 libneon27-gnutls libnet-daemon-perl
  libopencdk10 libplrpc-perl libpq5 libreadline5 libsasl2-2 libsasl2-modules
  libsqlite3-0 libssl0.9.8 libsvn1 libtasn1-3 libtasn1-3-dev libxml2
  libxml2-utils libxslt1.1 mime-support mysql-common openssl pkg-config python
  python2.5 readline-common sgml-base sgml-data update-inetd xml-core xsltproc
Suggested packages:
  doc-base docbook docbook-dsssl docbook-defguide libsaxon-java libxalan2-java
  xalan gettext-doc libcurl3-dbg dbishell rng-tools libgcrypt11-doc gnutls-doc
  gnutls-bin guile-gnutls krb5-doc krb5-user libcompress-zlib-perl
  libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql
  libsasl2-modules-gssapi-mit libsasl2-modules-gssapi-heimdal openssl-doc
  python-doc python-tk python-profiler python2.5-doc sgml-base-doc perlsgml
  doc-html-w3 opensp subversion-tools db4.6-util tclreadline zip debhelper
Recommended packages:
  docbook-utils fop source-highlight vim-addon-manager info info-browser
  netbase docbook-xsl-doc-html docbook-xsl-doc-pdf docbook-xsl-doc-text
  docbook-xsl-doc curl wget lynx libglib2.0-data libgpmg1 file libpaper-utils
The following NEW packages will be installed:
  asciidoc ca-certificates comerr-dev cvs docbook-xml docbook-xsl gettext
  gettext-base libapr1 libaprutil1 libcurl3-gnutls libcurl4-gnutls-dev
  libdbd-sqlite3-perl libdbi-perl libexpat1 libexpat1-dev libgcrypt11
  libgcrypt11-dev libglib2.0-0 libgnutls-dev libgnutls13 libgnutls26
  libgpg-error-dev libgpg-error0 libidn11 libidn11-dev libkadm55 libkeyutils1
  libkrb5-dev libkrb53 libldap-2.4-2 libldap2-dev liblzo2-2
  libmysqlclient15off libncursesw5 libneon27-gnutls libnet-daemon-perl
  libopencdk10 libplrpc-perl libpq5 libreadline5 libsasl2-2 libsasl2-modules
  libsqlite3-0 libssl0.9.8 libsvn-perl libsvn1 libtasn1-3 libtasn1-3-dev
  libxml2 libxml2-utils libxslt1.1 mime-support mysql-common openssl
  pkg-config python python2.5 readline-common sgml-base sgml-data subversion
  tcl8.4 unzip update-inetd xml-core xmlto xsltproc zlib1g-dev
0 upgraded, 69 newly installed, 0 to remove and 0 not upgraded.
Need to get 4118kB/28.9MB of archives.
After unpacking 97.2MB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  libssl0.9.8 openssl ca-certificates gettext-base libgpg-error0 libgcrypt11
  liblzo2-2 libopencdk10 libtasn1-3 libgnutls13 libidn11 libkeyutils1 libkrb53
  libsasl2-modules libsasl2-2 libldap-2.4-2 libcurl3-gnutls libncursesw5
  readline-common libreadline5 libsqlite3-0 mime-support python2.5 python
  update-inetd libexpat1 asciidoc cvs sgml-base xml-core sgml-data docbook-xml
  docbook-xsl gettext libapr1 mysql-common libmysqlclient15off libpq5
  libaprutil1 libgnutls26 libgpg-error-dev libgcrypt11-dev zlib1g-dev
  libtasn1-3-dev libgnutls-dev libglib2.0-0 pkg-config libidn11-dev libkadm55
  comerr-dev libkrb5-dev libldap2-dev libcurl4-gnutls-dev libnet-daemon-perl
  libplrpc-perl libdbi-perl libdbd-sqlite3-perl libexpat1-dev libxml2
  libneon27-gnutls libsvn1 libsvn-perl libxml2-utils libxslt1.1 subversion
  tcl8.4 unzip xsltproc xmlto
Authentication warning overridden.
Get:1 http://ftpmaster.internal intrepid/main asciidoc 8.2.6-1.1 [715kB]
Get:2 http://ftpmaster.internal intrepid/main libnet-daemon-perl 0.38-1.1 [45.9kB]
Get:3 http://ftpmaster.internal intrepid/main libplrpc-perl 0.2017-1.1 [35.0kB]
Get:4 http://ftpmaster.internal intrepid/main libdbi-perl 1.605-1 [789kB]
Get:5 http://ftpmaster.internal intrepid/main libdbd-sqlite3-perl 1.14-2build2 [54.5kB]
Get:6 http://ftpmaster.internal intrepid/main libneon27-gnutls 0.28.2-2 [119kB]
Get:7 http://ftpmaster.internal intrepid/main libsvn1 1.5.0dfsg1-1ubuntu2 [788kB]
Get:8 http://ftpmaster.internal intrepid/main libsvn-perl 1.5.0dfsg1-1ubuntu2 [1083kB]
Get:9 http://ftpmaster.internal intrepid/main subversion 1.5.0dfsg1-1ubuntu2 [319kB]
Get:10 http://ftpmaster.internal intrepid/main unzip 5.52-11ubuntu1 [170kB]
Fetched 4118kB in 0s (11.9MB/s)
Selecting previously deselected package libssl0.9.8.
(Reading database ... 10564 files and directories currently installed.)
Unpacking libssl0.9.8 (from .../libssl0.9.8_0.9.8g-10.1ubuntu1_amd64.deb) ...
Selecting previously deselected package openssl.
Unpacking openssl (from .../openssl_0.9.8g-10.1ubuntu1_amd64.deb) ...
Selecting previously deselected package ca-certificates.
Unpacking ca-certificates (from .../ca-certificates_20080514-0ubuntu1_all.deb) ...
Selecting previously deselected package gettext-base.
Unpacking gettext-base (from .../gettext-base_0.17-3ubuntu1_amd64.deb) ...
Selecting previously deselected package libgpg-error0.
Unpacking libgpg-error0 (from .../libgpg-error0_1.4-2ubuntu7_amd64.deb) ...
Selecting previously deselected package libgcrypt11.
Unpacking libgcrypt11 (from .../libgcrypt11_1.4.1-1ubuntu1_amd64.deb) ...
Selecting previously deselected package liblzo2-2.
Unpacking liblzo2-2 (from .../liblzo2-2_2.03-1_amd64.deb) ...
Selecting previously deselected package libopencdk10.
Unpacking libopencdk10 (from .../libopencdk10_0.6.6-1ubuntu1_amd64.deb) ...
Selecting previously deselected package libtasn1-3.
Unpacking libtasn1-3 (from .../libtasn1-3_1.4-1_amd64.deb) ...
Selecting previously deselected package libgnutls13.
Unpacking libgnutls13 (from .../libgnutls13_2.0.4-1ubuntu3_amd64.deb) ...
Selecting previously deselected package libidn11.
Unpacking libidn11 (from .../libidn11_1.8+20080606-1_amd64.deb) ...
Selecting previously deselected package libkeyutils1.
Unpacking libkeyutils1 (from .../libkeyutils1_1.2-7_amd64.deb) ...
Selecting previously deselected package libkrb53.
Unpacking libkrb53 (from .../libkrb53_1.6.dfsg.4~beta1-3_amd64.deb) ...
Selecting previously deselected package libsasl2-modules.
Unpacking libsasl2-modules (from .../libsasl2-modules_2.1.22.dfsg1-21ubuntu1_amd64.deb) ...
Selecting previously deselected package libsasl2-2.
Unpacking libsasl2-2 (from .../libsasl2-2_2.1.22.dfsg1-21ubuntu1_amd64.deb) ...
Selecting previously deselected package libldap-2.4-2.
Unpacking libldap-2.4-2 (from .../libldap-2.4-2_2.4.10-1ubuntu1_amd64.deb) ...
Selecting previously deselected package libcurl3-gnutls.
Unpacking libcurl3-gnutls (from .../libcurl3-gnutls_7.18.2-1ubuntu1_amd64.deb) ...
Selecting previously deselected package libncursesw5.
Unpacking libncursesw5 (from .../libncursesw5_5.6+20071124-1ubuntu2_amd64.deb) ...
Selecting previously deselected package readline-common.
Unpacking readline-common (from .../readline-common_5.2-3build1_all.deb) ...
Selecting previously deselected package libreadline5.
Unpacking libreadline5 (from .../libreadline5_5.2-3build1_amd64.deb) ...
Selecting previously deselected package libsqlite3-0.
Unpacking libsqlite3-0 (from .../libsqlite3-0_3.5.9-3_amd64.deb) ...
Selecting previously deselected package mime-support.
Unpacking mime-support (from .../mime-support_3.44-1_all.deb) ...
Selecting previously deselected package python2.5.
Unpacking python2.5 (from .../python2.5_2.5.2-7ubuntu2_amd64.deb) ...
Selecting previously deselected package python.
Unpacking python (from .../python_2.5.2-1ubuntu1_all.deb) ...
Selecting previously deselected package update-inetd.
Unpacking update-inetd (from .../update-inetd_4.30_all.deb) ...
Selecting previously deselected package libexpat1.
Unpacking libexpat1 (from .../libexpat1_2.0.1-4_amd64.deb) ...
Selecting previously deselected package asciidoc.
Unpacking asciidoc (from .../asciidoc_8.2.6-1.1_all.deb) ...
Selecting previously deselected package cvs.
Unpacking cvs (from .../cvs_1%3a1.12.13-11_amd64.deb) ...
Selecting previously deselected package sgml-base.
Unpacking sgml-base (from .../sgml-base_1.26_all.deb) ...
Selecting previously deselected package xml-core.
Unpacking xml-core (from .../archives/xml-core_0.11_all.deb) ...
Selecting previously deselected package sgml-data.
Unpacking sgml-data (from .../sgml-data_2.0.3_all.deb) ...
Selecting previously deselected package docbook-xml.
Unpacking docbook-xml (from .../docbook-xml_4.5-5_all.deb) ...
Selecting previously deselected package docbook-xsl.
Unpacking docbook-xsl (from .../docbook-xsl_1.73.2.dfsg.1-4_all.deb) ...
Selecting previously deselected package gettext.
Unpacking gettext (from .../gettext_0.17-3ubuntu1_amd64.deb) ...
Selecting previously deselected package libapr1.
Unpacking libapr1 (from .../libapr1_1.2.12-4_amd64.deb) ...
Selecting previously deselected package mysql-common.
Unpacking mysql-common (from .../mysql-common_5.0.51a-6ubuntu3_all.deb) ...
Selecting previously deselected package libmysqlclient15off.
Unpacking libmysqlclient15off (from .../libmysqlclient15off_5.0.51a-6ubuntu3_amd64.deb) ...
Selecting previously deselected package libpq5.
Unpacking libpq5 (from .../libpq5_8.3.3-1_amd64.deb) ...
Selecting previously deselected package libaprutil1.
Unpacking libaprutil1 (from .../libaprutil1_1.2.12+dfsg-7_amd64.deb) ...
Selecting previously deselected package libgnutls26.
Unpacking libgnutls26 (from .../libgnutls26_2.4.1-1_amd64.deb) ...
Selecting previously deselected package libgpg-error-dev.
Unpacking libgpg-error-dev (from .../libgpg-error-dev_1.4-2ubuntu7_amd64.deb) ...
Selecting previously deselected package libgcrypt11-dev.
Unpacking libgcrypt11-dev (from .../libgcrypt11-dev_1.4.1-1ubuntu1_amd64.deb) ...
Selecting previously deselected package zlib1g-dev.
Unpacking zlib1g-dev (from .../zlib1g-dev_1%3a1.2.3.3.dfsg-12ubuntu1_amd64.deb) ...
Selecting previously deselected package libtasn1-3-dev.
Unpacking libtasn1-3-dev (from .../libtasn1-3-dev_1.4-1_amd64.deb) ...
Selecting previously deselected package libgnutls-dev.
Unpacking libgnutls-dev (from .../libgnutls-dev_2.4.1-1_amd64.deb) ...
Selecting previously deselected package libglib2.0-0.
Unpacking libglib2.0-0 (from .../libglib2.0-0_2.17.3-1ubuntu1_amd64.deb) ...
Selecting previously deselected package pkg-config.
Unpacking pkg-config (from .../pkg-config_0.22-1_amd64.deb) ...
Selecting previously deselected package libidn11-dev.
Unpacking libidn11-dev (from .../libidn11-dev_1.8+20080606-1_amd64.deb) ...
Selecting previously deselected package libkadm55.
Unpacking libkadm55 (from .../libkadm55_1.6.dfsg.4~beta1-3_amd64.deb) ...
Selecting previously deselected package comerr-dev.
Unpacking comerr-dev (from .../comerr-dev_2.1-1.40.8-2ubuntu2_amd64.deb) ...
Selecting previously deselected package libkrb5-dev.
Unpacking libkrb5-dev (from .../libkrb5-dev_1.6.dfsg.4~beta1-3_amd64.deb) ...
Selecting previously deselected package libldap2-dev.
Unpacking libldap2-dev (from .../libldap2-dev_2.4.10-1ubuntu1_amd64.deb) ...
Selecting previously deselected package libcurl4-gnutls-dev.
Unpacking libcurl4-gnutls-dev (from .../libcurl4-gnutls-dev_7.18.2-1ubuntu1_amd64.deb) ...
Selecting previously deselected package libnet-daemon-perl.
Unpacking libnet-daemon-perl (from .../libnet-daemon-perl_0.38-1.1_all.deb) ...
Selecting previously deselected package libplrpc-perl.
Unpacking libplrpc-perl (from .../libplrpc-perl_0.2017-1.1_all.deb) ...
Selecting previously deselected package libdbi-perl.
Unpacking libdbi-perl (from .../libdbi-perl_1.605-1_amd64.deb) ...
Selecting previously deselected package libdbd-sqlite3-perl.
Unpacking libdbd-sqlite3-perl (from .../libdbd-sqlite3-perl_1.14-2build2_amd64.deb) ...
Selecting previously deselected package libexpat1-dev.
Unpacking libexpat1-dev (from .../libexpat1-dev_2.0.1-4_amd64.deb) ...
Selecting previously deselected package libxml2.
Unpacking libxml2 (from .../libxml2_2.6.32.dfsg-2ubuntu1_amd64.deb) ...
Selecting previously deselected package libneon27-gnutls.
Unpacking libneon27-gnutls (from .../libneon27-gnutls_0.28.2-2_amd64.deb) ...
Selecting previously deselected package libsvn1.
Unpacking libsvn1 (from .../libsvn1_1.5.0dfsg1-1ubuntu2_amd64.deb) ...
Selecting previously deselected package libsvn-perl.
Unpacking libsvn-perl (from .../libsvn-perl_1.5.0dfsg1-1ubuntu2_amd64.deb) ...
Selecting previously deselected package libxml2-utils.
Unpacking libxml2-utils (from .../libxml2-utils_2.6.32.dfsg-2ubuntu1_amd64.deb) ...
Selecting previously deselected package libxslt1.1.
Unpacking libxslt1.1 (from .../libxslt1.1_1.1.24-1ubuntu1_amd64.deb) ...
Selecting previously deselected package subversion.
Unpacking subversion (from .../subversion_1.5.0dfsg1-1ubuntu2_amd64.deb) ...
Selecting previously deselected package tcl8.4.
Unpacking tcl8.4 (from .../tcl8.4_8.4.19-2_amd64.deb) ...
Selecting previously deselected package unzip.
Unpacking unzip (from .../unzip_5.52-11ubuntu1_amd64.deb) ...
Selecting previously deselected package xsltproc.
Unpacking xsltproc (from .../xsltproc_1.1.24-1ubuntu1_amd64.deb) ...
Selecting previously deselected package xmlto.
Unpacking xmlto (from .../xmlto_0.0.20-1_amd64.deb) ...
Setting up libssl0.9.8 (0.9.8g-10.1ubuntu1) ...

Setting up openssl (0.9.8g-10.1ubuntu1) ...

Setting up ca-certificates (20080514-0ubuntu1) ...
Updating certificates in /etc/ssl/certs....done.
Running hooks in /etc/ca-certificates/update.d....done.

Setting up gettext-base (0.17-3ubuntu1) ...

Setting up libgpg-error0 (1.4-2ubuntu7) ...

Setting up libgcrypt11 (1.4.1-1ubuntu1) ...

Setting up liblzo2-2 (2.03-1) ...

Setting up libopencdk10 (0.6.6-1ubuntu1) ...

Setting up libtasn1-3 (1.4-1) ...

Setting up libgnutls13 (2.0.4-1ubuntu3) ...

Setting up libidn11 (1.8+20080606-1) ...

Setting up libkeyutils1 (1.2-7) ...

Setting up libkrb53 (1.6.dfsg.4~beta1-3) ...

Setting up libncursesw5 (5.6+20071124-1ubuntu2) ...

Setting up readline-common (5.2-3build1) ...

Setting up libreadline5 (5.2-3build1) ...

Setting up libsqlite3-0 (3.5.9-3) ...

Setting up mime-support (3.44-1) ...

Setting up python2.5 (2.5.2-7ubuntu2) ...

Setting up python (2.5.2-1ubuntu1) ...

Setting up update-inetd (4.30) ...

Setting up libexpat1 (2.0.1-4) ...

Setting up asciidoc (8.2.6-1.1) ...
Setting up cvs (1.12.13-11) ...

Setting up sgml-base (1.26) ...

Setting up xml-core (0.11) ...

Setting up sgml-data (2.0.3) ...

Setting up docbook-xml (4.5-5) ...

Setting up docbook-xsl (1.73.2.dfsg.1-4) ...

Setting up gettext (0.17-3ubuntu1) ...

Setting up libapr1 (1.2.12-4) ...

Setting up mysql-common (5.0.51a-6ubuntu3) ...
Setting up libmysqlclient15off (5.0.51a-6ubuntu3) ...

Setting up libgnutls26 (2.4.1-1) ...

Setting up libgpg-error-dev (1.4-2ubuntu7) ...
Setting up libgcrypt11-dev (1.4.1-1ubuntu1) ...
Setting up zlib1g-dev (1.2.3.3.dfsg-12ubuntu1) ...
Setting up libtasn1-3-dev (1.4-1) ...

Setting up libgnutls-dev (2.4.1-1) ...
Setting up libglib2.0-0 (2.17.3-1ubuntu1) ...

Setting up pkg-config (0.22-1) ...
Setting up libidn11-dev (1.8+20080606-1) ...

Setting up libkadm55 (1.6.dfsg.4~beta1-3) ...

Setting up comerr-dev (2.1-1.40.8-2ubuntu2) ...

Setting up libkrb5-dev (1.6.dfsg.4~beta1-3) ...
Setting up libnet-daemon-perl (0.38-1.1) ...
Setting up libplrpc-perl (0.2017-1.1) ...
Setting up libdbi-perl (1.605-1) ...
Setting up libdbd-sqlite3-perl (1.14-2build2) ...
Setting up libexpat1-dev (2.0.1-4) ...

Setting up libxml2 (2.6.32.dfsg-2ubuntu1) ...

Setting up libneon27-gnutls (0.28.2-2) ...

Setting up libxml2-utils (2.6.32.dfsg-2ubuntu1) ...
Setting up libxslt1.1 (1.1.24-1ubuntu1) ...

Setting up tcl8.4 (8.4.19-2) ...

Setting up unzip (5.52-11ubuntu1) ...
Setting up xsltproc (1.1.24-1ubuntu1) ...
Setting up xmlto (0.0.20-1) ...
Setting up libsasl2-modules (2.1.22.dfsg1-21ubuntu1) ...
Setting up libsasl2-2 (2.1.22.dfsg1-21ubuntu1) ...

Setting up libldap-2.4-2 (2.4.10-1ubuntu1) ...

Setting up libcurl3-gnutls (7.18.2-1ubuntu1) ...

Setting up libpq5 (8.3.3-1) ...

Setting up libaprutil1 (1.2.12+dfsg-7) ...

Setting up libldap2-dev (2.4.10-1ubuntu1) ...
Setting up libcurl4-gnutls-dev (7.18.2-1ubuntu1) ...

Setting up libsvn1 (1.5.0dfsg1-1ubuntu2) ...

Setting up libsvn-perl (1.5.0dfsg1-1ubuntu2) ...

Setting up subversion (1.5.0dfsg1-1ubuntu2) ...
modified:
  sbuild.conf
Checking correctness of source dependencies...
Toolchain package versions: libc6-dev_2.8~20080505-0ubuntu6 make_3.81-5 dpkg-dev_1.14.20ubuntu1 linux-libc-dev_2.6.26-3.9 gcc-4.3_4.3.1-3ubuntu1 g++-4.3_4.3.1-3ubuntu1 binutils_2.18.50.20080610-0ubuntu1 libstdc++6_4.3.1-3ubuntu1 libstdc++6-4.3-dev_4.3.1-3ubuntu1
------------------------------------------------------------------------------
dpkg-source: extracting git-core in git-core-1.5.4.3
dpkg-source: unpacking git-core_1.5.4.3.orig.tar.gz
dpkg-source: applying /home/buildd/build-intrepid-autotest/git-core_1.5.4.3-1ubuntu2.diff.gz
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value: 
dpkg-buildpackage: set LDFLAGS to default value: -Wl,-Bsymbolic-functions
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package git-core
dpkg-buildpackage: source version 1:1.5.4.3-1ubuntu2
dpkg-buildpackage: host architecture amd64
 /usr/bin/fakeroot debian/rules clean
/usr/bin/make clean NO_OPENSSL=1 GITWEB_CONFIG=/etc/gitweb.conf prefix=/usr mandir=/usr/share/man INSTALLDIRS=vendor WITH_P4IMPORT=1 PYTHON_PATH=/usr/bin/python TCLTK_PATH=/usr/bin/wish8.4
make[1]: Entering directory `/build/buildd/git-core-1.5.4.3'
GIT_VERSION = 1.5.4.3
make[1]: Leaving directory `/build/buildd/git-core-1.5.4.3'
make[1]: Entering directory `/build/buildd/git-core-1.5.4.3'
rm -f *.o mozilla-sha1/*.o arm/*.o ppc/*.o compat/*.o xdiff/*.o \
		libgit.a xdiff/lib.a
rm -f git-fetch-pack git-hash-object git-index-pack git-fast-import git-daemon git-merge-index git-mktag git-mktree git-patch-id git-receive-pack git-send-pack git-shell git-show-index git-unpack-file git-update-server-info git-upload-pack git-pack-redundant git-var git-merge-tree git-imap-send git-merge-recursive  git-http-push git-bisect git-checkout git-clone git-merge-one-file git-mergetool git-parse-remote git-pull git-rebase git-rebase--interactive git-repack git-request-pull git-sh-setup git-am git-merge git-merge-stupid git-merge-octopus git-merge-resolve git-lost-found git-quiltimport git-submodule git-filter-branch git-stash git-help--browse git-add--interactive git-archimport git-cvsimport git-relink git-cvsserver git-remote git-cvsexportcommit git-send-email git-svn git-instaweb git-merge-subtree git-format-patch git-show git-whatchanged git-cherry git-get-tar-commit-id git-init git-repo-config git-fsck-objects git-cherry-pick git-peek-remote git-status git-add git-annotate git-apply git-archive git-blame git-branch git-bundle git-cat-file git-check-attr git-checkout-index git-check-ref-format git-clean git-commit git-commit-tree git-count-objects git-describe git-diff git-diff-files git-diff-index git-diff-tree git-fast-export git-fetch git-fetch-pack git-fetch--tool git-fmt-merge-msg git-for-each-ref git-fsck git-gc git-grep git-init-db git-log git-ls-files git-ls-tree git-ls-remote git-mailinfo git-mailsplit git-merge-base git-merge-file git-merge-ours git-mv git-name-rev git-pack-objects git-prune git-prune-packed git-push git-read-tree git-reflog git-send-pack git-config git-rerere git-reset git-rev-list git-rev-parse git-revert git-rm git-shortlog git-show-branch git-stripspace git-symbolic-ref git-tag git-tar-tree git-unpack-objects git-update-index git-update-ref git-upload-archive git-verify-pack git-verify-tag git-write-tree git-show-ref git-pack-refs git-http-fetch git
rm -f test-chmtime test-genrandom test-date test-delta test-sha1 test-match-trees test-absolute-path test-parse-options
rm -f *.spec *.pyc *.pyo */*.pyc */*.pyo common-cmds.h TAGS tags cscope*
rm -f -r autom4te.cache
rm -f config.log config.mak.autogen config.mak.append config.status config.cache
rm -f -r git-1.5.4.3 .doc-tmp-dir
rm -f git-1.5.4.3.tar.gz git-core_1.5.4.3-*.tar.gz
rm -f git-htmldocs-1.5.4.3.tar.gz git-manpages-1.5.4.3.tar.gz
rm -f gitweb/gitweb.cgi
/usr/bin/make -C Documentation/ clean
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/Documentation'
rm -f doc.dep+ doc.dep
/usr/bin/perl ./build-docdep.perl >doc.dep+
mv doc.dep+ doc.dep
/usr/bin/make -C ../ GIT-VERSION-FILE
make[3]: Entering directory `/build/buildd/git-core-1.5.4.3'
make[3]: `GIT-VERSION-FILE' is up to date.
make[3]: Leaving directory `/build/buildd/git-core-1.5.4.3'
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/Documentation'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/Documentation'
/usr/bin/make -C ../ GIT-VERSION-FILE
make[3]: Entering directory `/build/buildd/git-core-1.5.4.3'
make[3]: `GIT-VERSION-FILE' is up to date.
make[3]: Leaving directory `/build/buildd/git-core-1.5.4.3'
rm -f *.xml *.xml+ *.html *.html+ *.1 *.5 *.7
rm -f *.texi *.texi+ git.info gitman.info
rm -f howto-index.txt howto/*.html doc.dep
rm -f technical/api-*.html technical/api-index.txt
rm -f cmds-ancillaryinterrogators.txt cmds-ancillarymanipulators.txt cmds-mainporcelain.txt cmds-plumbinginterrogators.txt cmds-plumbingmanipulators.txt cmds-synchingrepositories.txt cmds-synchelpers.txt cmds-purehelpers.txt cmds-foreignscminterface.txt *.made
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/Documentation'
/usr/bin/make -C perl clean
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/perl'
rm -f ppport.h
rm -f perl.mak
rm -f perl.mak.old
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/perl'
/usr/bin/make -C templates/ clean
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/templates'
rm -f -r blt boilerplates.made
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/templates'
/usr/bin/make -C t/ clean
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/t'
rm -f -r trash
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/t'
/usr/bin/make -C gitk-git clean
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/gitk-git'
rm -f gitk-wish po/*.msg
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/gitk-git'
/usr/bin/make -C git-gui clean
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/git-gui'
GITGUI_VERSION = 0.9.2.7.g3bae
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/git-gui'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/git-gui'
rm -rf git-gui lib/tclIndex po/*.msg
rm -rf GIT-VERSION-FILE GIT-GUI-VARS
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/git-gui'
rm -f GIT-VERSION-FILE GIT-CFLAGS GIT-GUI-VARS
make[1]: Leaving directory `/build/buildd/git-core-1.5.4.3'
! test -e patch-stamp || \
	  for i in `ls -1r debian/diff/*.diff || :`; do patch -p1 -R <$i; done
rm -rf '/build/buildd/git-core-1.5.4.3/tmp'
rm -f patch-stamp build-arch-stamp build-indep-stamp
rm -rf '/build/buildd/git-core-1.5.4.3/debian/git'-core '/build/buildd/git-core-1.5.4.3/debian/git'-doc '/build/buildd/git-core-1.5.4.3/debian/git'-arch '/build/buildd/git-core-1.5.4.3/debian/git'-cvs \
	  '/build/buildd/git-core-1.5.4.3/debian/git'-svn '/build/buildd/git-core-1.5.4.3/debian/git'-email '/build/buildd/git-core-1.5.4.3/debian/git'-daemon-run '/build/buildd/git-core-1.5.4.3/debian/git'-gui \
	  '/build/buildd/git-core-1.5.4.3/debian/git'k '/build/buildd/git-core-1.5.4.3/debian/git'web
rm -f debian/files debian/substvars changelog
 debian/rules build
for i in `ls -1 debian/diff/*.diff || :`; do \
	  patch -p1 <$i || exit 1; \
	done
patching file pager.c
patching file builtin-tag.c
patching file git-sh-setup.sh
patching file t/t7005-editor.sh
patching file ident.c
patching file gitk-git/gitk
touch patch-stamp
gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.3.1-3ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.3/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.3 --program-suffix=-4.3 --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.3.1 (Ubuntu 4.3.1-3ubuntu1) 
DESTDIR='/build/buildd/git-core-1.5.4.3/debian/git'-core /usr/bin/make all \
	  CC='gcc' CFLAGS='-g -Wall -O2' NO_OPENSSL=1 GITWEB_CONFIG=/etc/gitweb.conf prefix=/usr mandir=/usr/share/man INSTALLDIRS=vendor WITH_P4IMPORT=1 PYTHON_PATH=/usr/bin/python TCLTK_PATH=/usr/bin/wish8.4
make[1]: Entering directory `/build/buildd/git-core-1.5.4.3'
GIT_VERSION = 1.5.4.3
make[1]: Leaving directory `/build/buildd/git-core-1.5.4.3'
make[1]: Entering directory `/build/buildd/git-core-1.5.4.3'
    GEN common-cmds.h
    * new build flags or prefix
    CC git.o
git.c: In function 'handle_alias':
git.c:220: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result
    CC builtin-add.o
    CC builtin-annotate.o
    CC builtin-apply.o
    CC builtin-archive.o
    CC builtin-blame.o
    CC builtin-branch.o
    CC builtin-bundle.o
    CC builtin-cat-file.o
    CC builtin-check-attr.o
    CC builtin-checkout-index.o
    CC builtin-check-ref-format.o
    CC builtin-clean.o
    CC builtin-commit.o
    CC builtin-commit-tree.o
    CC builtin-count-objects.o
    CC builtin-describe.o
    CC builtin-diff.o
    CC builtin-diff-files.o
    CC builtin-diff-index.o
    CC builtin-diff-tree.o
    CC builtin-fast-export.o
    CC builtin-fetch.o
    CC builtin-fetch-pack.o
    CC builtin-fetch--tool.o
    CC builtin-fmt-merge-msg.o
builtin-fmt-merge-msg.c: In function 'cmd_fmt_merge_msg':
builtin-fmt-merge-msg.c:296: warning: format not a string literal and no format arguments
builtin-fmt-merge-msg.c:300: warning: format not a string literal and no format arguments
builtin-fmt-merge-msg.c:308: warning: format not a string literal and no format arguments
builtin-fmt-merge-msg.c:313: warning: format not a string literal and no format arguments
builtin-fmt-merge-msg.c:319: warning: format not a string literal and no format arguments
builtin-fmt-merge-msg.c:324: warning: format not a string literal and no format arguments
    CC builtin-for-each-ref.o
    CC builtin-fsck.o
builtin-fsck.c: In function 'check_unreachable_object':
builtin-fsck.c:162: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    CC builtin-gc.o
    CC builtin-grep.o
    CC builtin-init-db.o
    CC builtin-log.o
builtin-log.c: In function 'show_object':
builtin-log.c:290: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    CC builtin-ls-files.o
    CC builtin-ls-tree.o
    CC builtin-ls-remote.o
    CC builtin-mailinfo.o
    CC builtin-mailsplit.o
    CC builtin-merge-base.o
    CC builtin-merge-file.o
builtin-merge-file.c: In function 'cmd_merge_file':
builtin-merge-file.c:27: warning: ignoring return value of 'freopen', declared with attribute warn_unused_result
    CC builtin-merge-ours.o
    CC builtin-mv.o
    CC builtin-name-rev.o
builtin-name-rev.c: In function 'cmd_name_rev':
builtin-name-rev.c:246: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
builtin-name-rev.c:255: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    CC builtin-pack-objects.o
    CC builtin-prune.o
    CC builtin-prune-packed.o
    CC builtin-push.o
    CC builtin-read-tree.o
    CC builtin-reflog.o
    CC builtin-send-pack.o
    CC builtin-config.o
    CC builtin-rerere.o
builtin-rerere.c: In function 'handle_file':
builtin-rerere.c:110: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
builtin-rerere.c:112: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
builtin-rerere.c: In function 'merge':
builtin-rerere.c:181: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
builtin-rerere.c: In function 'copy_file':
builtin-rerere.c:281: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    CC builtin-reset.o
    CC builtin-rev-list.o
    CC builtin-rev-parse.o
    CC builtin-revert.o
    CC builtin-rm.o
    CC builtin-shortlog.o
    CC builtin-show-branch.o
    CC builtin-stripspace.o
    CC builtin-symbolic-ref.o
    CC builtin-tag.o
builtin-tag.c: In function 'show_reference':
builtin-tag.c:119: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    CC builtin-tar-tree.o
    CC builtin-unpack-objects.o
    CC builtin-update-index.o
    CC builtin-update-ref.o
    CC builtin-upload-archive.o
    CC builtin-verify-pack.o
    CC builtin-verify-tag.o
    CC builtin-write-tree.o
    CC builtin-show-ref.o
    CC builtin-pack-refs.o
    CC builtin-http-fetch.o
    CC blob.o
    CC commit.o
    CC connect.o
connect.c: In function 'get_port':
connect.c:467: warning: ignoring return value of 'strtol', declared with attribute warn_unused_result
    CC csum-file.o
    CC cache-tree.o
    CC base85.o
    CC date.o
    CC diff-delta.o
    CC entry.o
    CC exec_cmd.o
    CC ident.o
    CC pretty.o
    CC interpolate.o
    CC hash.o
    CC lockfile.o
    CC patch-ids.o
    CC object.o
    CC pack-check.o
    CC pack-write.o
    CC patch-delta.o
    CC path.o
    CC pkt-line.o
    CC sideband.o
    CC reachable.o
    CC reflog-walk.o
    CC quote.o
quote.c: In function 'quote_c_style_counted':
quote.c:189: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
quote.c:202: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
quote.c: In function 'write_name_quotedpfx':
quote.c:257: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    CC read-cache.o
    CC refs.o
    CC run-command.o
    CC dir.o
    CC object-refs.o
    CC server-info.o
    CC setup.o
setup.c: In function 'setup_git_directory_gently':
setup.c:315: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result
    CC sha1_file.o
    CC sha1_name.o
    CC strbuf.o
    CC tag.o
    CC tree.o
    CC usage.o
    CC config.o
    CC environment.o
environment.c: In function 'get_git_work_tree':
environment.c:92: warning: format not a string literal and no format arguments
    CC ctype.o
    CC copy.o
    CC revision.o
    CC pager.o
    CC tree-walk.o
    CC xdiff-interface.o
    CC write_or_die.o
    CC trace.o
    CC list-objects.o
    CC grep.o
grep.c: In function 'grep_buffer_1':
grep.c:458: warning: format not a string literal and no format arguments
grep.c:468: warning: format not a string literal and no format arguments
grep.c:479: warning: format not a string literal and no format arguments
    CC match-trees.o
    CC alloc.o
    CC merge-file.o
    CC path-list.o
    CC help.o
    CC unpack-trees.o
    CC diff.o
diff.c: In function 'print_word':
diff.c:396: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
diff.c: In function 'emit_line':
diff.c:514: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    CC diff-lib.o
    CC diffcore-break.o
    CC diffcore-order.o
    CC diffcore-pickaxe.o
    CC diffcore-rename.o
    CC tree-diff.o
    CC combine-diff.o
    CC diffcore-delta.o
    CC log-tree.o
    CC color.o
    CC wt-status.o
    CC archive-zip.o
    CC archive-tar.o
    CC shallow.o
    CC utf8.o
utf8.c: In function 'print_spaces':
utf8.c:267: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
utf8.c:270: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
utf8.c: In function 'print_wrapped_text':
utf8.c:298: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    CC convert.o
    CC attr.o
    CC decorate.o
    CC progress.o
    CC mailmap.o
    CC symlinks.o
    CC remote.o
    CC transport.o
transport.c: In function 'get_refs_via_curl':
transport.c:453: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
    CC bundle.o
bundle.c: In function 'verify_bundle':
bundle.c:117: warning: format not a string literal and no format arguments
bundle.c:141: warning: format not a string literal and no format arguments
    CC walker.o
    CC parse-options.o
    CC ws.o
ws.c: In function 'check_and_emit_line':
ws.c:157: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
ws.c:161: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
ws.c:163: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
ws.c:172: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
ws.c:187: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
ws.c:195: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    CC archive.o
    CC http.o
http.c: In function 'http_fetch_ref':
http.c:619: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
    CC http-walker.o
http-walker.c: In function 'start_object_request':
http-walker.c:191: warning: ignoring return value of 'ftruncate', declared with attribute warn_unused_result
http-walker.c: In function 'fetch_alternates':
http-walker.c:622: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
In function 'fetch_indices',
    inlined from 'fetch_pack' at http-walker.c:729:
http-walker.c:664: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
    CC mozilla-sha1/sha1.o
    CC compat/strlcpy.o
    AR libgit.a
    CC xdiff/xdiffi.o
    CC xdiff/xprepare.o
    CC xdiff/xutils.o
    CC xdiff/xemit.o
    CC xdiff/xmerge.o
    AR xdiff/lib.a
    LINK git
    BUILTIN git-fetch-pack
    CC hash-object.o
    LINK git-hash-object
    CC index-pack.o
    LINK git-index-pack
    CC fast-import.o
fast-import.c: In function 'validate_raw_date':
fast-import.c:1716: warning: ignoring return value of 'strtoul', declared with attribute warn_unused_result
fast-import.c:1725: warning: ignoring return value of 'strtoul', declared with attribute warn_unused_result
fast-import.c: In function 'cmd_progress':
fast-import.c:2281: warning: ignoring return value of 'fwrite', declared with attribute warn_unused_result
    LINK git-fast-import
    CC daemon.o
daemon.c: In function 'main':
daemon.c:1192: warning: ignoring return value of 'freopen', declared with attribute warn_unused_result
    LINK git-daemon
    CC merge-index.o
    LINK git-merge-index
    CC mktag.o
    LINK git-mktag
    CC mktree.o
    LINK git-mktree
    CC patch-id.o
    LINK git-patch-id
    CC receive-pack.o
    LINK git-receive-pack
    BUILTIN git-send-pack
    CC shell.o
    LINK git-shell
    CC show-index.o
    LINK git-show-index
    CC unpack-file.o
    LINK git-unpack-file
    CC update-server-info.o
    LINK git-update-server-info
    CC upload-pack.o
    LINK git-upload-pack
    CC pack-redundant.o
    LINK git-pack-redundant
    CC var.o
    LINK git-var
    CC merge-tree.o
    LINK git-merge-tree
    CC imap-send.o
    LINK git-imap-send
    CC merge-recursive.o
merge-recursive.c: In function 'update_file_flags':
merge-recursive.c:581: warning: ignoring return value of 'symlink', declared with attribute warn_unused_result
    LINK git-merge-recursive
    CC http-push.o
http-push.c: In function 'start_fetch_loose':
http-push.c:316: warning: ignoring return value of 'ftruncate', declared with attribute warn_unused_result
http-push.c: In function 'unlock_remote':
http-push.c:1319: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
http-push.c: In function 'remote_ls':
http-push.c:1458: warning: call to '_curl_easy_setopt_err_read_cb' declared with attribute warning: curl_easy_setopt expects a curl_read_callback argument for this option
http-push.c:1460: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
http-push.c: In function 'lock_remote':
http-push.c:1211: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
http-push.c:1241: warning: call to '_curl_easy_setopt_err_read_cb' declared with attribute warning: curl_easy_setopt expects a curl_read_callback argument for this option
http-push.c:1243: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
http-push.c: In function 'update_remote':
http-push.c:1712: warning: call to '_curl_easy_setopt_err_read_cb' declared with attribute warning: curl_easy_setopt expects a curl_read_callback argument for this option
http-push.c:1713: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
In function 'refresh_lock',
    inlined from 'check_locks' at http-push.c:638:
http-push.c:605: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
http-push.c: In function 'start_put':
http-push.c:541: warning: call to '_curl_easy_setopt_err_read_cb' declared with attribute warning: curl_easy_setopt expects a curl_read_callback argument for this option
http-push.c:542: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
http-push.c: In function 'fetch_symref':
http-push.c:2017: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
http-push.c: In function 'delete_remote_branch':
http-push.c:2139: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
In function 'start_move',
    inlined from 'finish_request' at http-push.c:708,
    inlined from 'process_response' at http-push.c:186:
http-push.c:572: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
In function 'start_mkcol',
    inlined from 'fill_active_slot' at http-push.c:812:
http-push.c:375: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
http-push.c: In function 'update_remote_info_refs':
http-push.c:1953: warning: call to '_curl_easy_setopt_err_read_cb' declared with attribute warning: curl_easy_setopt expects a curl_read_callback argument for this option
http-push.c:1954: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
In function 'locking_available',
    inlined from 'main' at http-push.c:2249:
http-push.c:1534: warning: call to '_curl_easy_setopt_err_read_cb' declared with attribute warning: curl_easy_setopt expects a curl_read_callback argument for this option
http-push.c:1536: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
In function 'fetch_indices',
    inlined from 'main' at http-push.c:2269:
http-push.c:1026: warning: call to '_curl_easy_setopt_err_write_callback' declared with attribute warning: curl_easy_setopt expects a curl_write_callback argument for this option
    LINK git-http-push
    GEN git-bisect
    GEN git-checkout
    GEN git-clone
    GEN git-merge-one-file
    GEN git-mergetool
    GEN git-parse-remote
    GEN git-pull
    GEN git-rebase
    GEN git-rebase--interactive
    GEN git-repack
    GEN git-request-pull
    GEN git-sh-setup
    GEN git-am
    GEN git-merge
    GEN git-merge-stupid
    GEN git-merge-octopus
    GEN git-merge-resolve
    GEN git-lost-found
    GEN git-quiltimport
    GEN git-submodule
    GEN git-filter-branch
    GEN git-stash
    GEN git-help--browse
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/perl'
/usr/bin/perl Makefile.PL PREFIX='/usr'
Writing perl.mak for Git
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/perl'
    GEN git-add--interactive
    GEN git-archimport
    GEN git-cvsimport
    GEN git-relink
    GEN git-cvsserver
    GEN git-remote
    GEN git-cvsexportcommit
    GEN git-send-email
    GEN git-svn
    GEN gitweb/gitweb.cgi
    GEN git-instaweb
    BUILTIN git-merge-subtree
    BUILTIN git-format-patch
    BUILTIN git-show
    BUILTIN git-whatchanged
    BUILTIN git-cherry
    BUILTIN git-get-tar-commit-id
    BUILTIN git-init
    BUILTIN git-repo-config
    BUILTIN git-fsck-objects
    BUILTIN git-cherry-pick
    BUILTIN git-peek-remote
    BUILTIN git-status
    BUILTIN git-add
    BUILTIN git-annotate
    BUILTIN git-apply
    BUILTIN git-archive
    BUILTIN git-blame
    BUILTIN git-branch
    BUILTIN git-bundle
    BUILTIN git-cat-file
    BUILTIN git-check-attr
    BUILTIN git-checkout-index
    BUILTIN git-check-ref-format
    BUILTIN git-clean
    BUILTIN git-commit
    BUILTIN git-commit-tree
    BUILTIN git-count-objects
    BUILTIN git-describe
    BUILTIN git-diff
    BUILTIN git-diff-files
    BUILTIN git-diff-index
    BUILTIN git-diff-tree
    BUILTIN git-fast-export
    BUILTIN git-fetch
    BUILTIN git-fetch--tool
    BUILTIN git-fmt-merge-msg
    BUILTIN git-for-each-ref
    BUILTIN git-fsck
    BUILTIN git-gc
    BUILTIN git-grep
    BUILTIN git-init-db
    BUILTIN git-log
    BUILTIN git-ls-files
    BUILTIN git-ls-tree
    BUILTIN git-ls-remote
    BUILTIN git-mailinfo
    BUILTIN git-mailsplit
    BUILTIN git-merge-base
    BUILTIN git-merge-file
    BUILTIN git-merge-ours
    BUILTIN git-mv
    BUILTIN git-name-rev
    BUILTIN git-pack-objects
    BUILTIN git-prune
    BUILTIN git-prune-packed
    BUILTIN git-push
    BUILTIN git-read-tree
    BUILTIN git-reflog
    BUILTIN git-config
    BUILTIN git-rerere
    BUILTIN git-reset
    BUILTIN git-rev-list
    BUILTIN git-rev-parse
    BUILTIN git-revert
    BUILTIN git-rm
    BUILTIN git-shortlog
    BUILTIN git-show-branch
    BUILTIN git-stripspace
    BUILTIN git-symbolic-ref
    BUILTIN git-tag
    BUILTIN git-tar-tree
    BUILTIN git-unpack-objects
    BUILTIN git-update-index
    BUILTIN git-update-ref
    BUILTIN git-upload-archive
    BUILTIN git-verify-pack
    BUILTIN git-verify-tag
    BUILTIN git-write-tree
    BUILTIN git-show-ref
    BUILTIN git-pack-refs
    BUILTIN git-http-fetch
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/git-gui'
GITGUI_VERSION = 0.9.2.7.g3bae
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/git-gui'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/git-gui'
    * new locations or Tcl/Tk interpreter
    GEN git-gui
    INDEX lib/
    MSGFMT    po/de.msg 371 translated.
    MSGFMT    po/fr.msg 371 translated.
    MSGFMT    po/hu.msg 371 translated.
    MSGFMT    po/it.msg 370 translated, 1 untranslated.
    MSGFMT    po/ja.msg 371 translated.
    MSGFMT    po/ru.msg 367 translated, 4 untranslated.
    MSGFMT    po/sv.msg 371 translated.
    MSGFMT po/zh_cn.msg 53 translated, 56 fuzzy, 253 untranslated.
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/git-gui'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/gitk-git'
    GEN gitk-wish
Generating catalog po/de.msg
msgfmt --statistics --tcl po/de.po -l de -d po/
163 translated messages.
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/gitk-git'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/perl'
make[3]: Entering directory `/build/buildd/git-core-1.5.4.3/perl'
cp private-Error.pm blib/lib/Error.pm
cp Git.pm blib/lib/Git.pm
Manifying blib/man3/private-Error.3pm
Manifying blib/man3/Git.3pm
make[3]: Leaving directory `/build/buildd/git-core-1.5.4.3/perl'
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/perl'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/templates'
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/templates'
    CC test-chmtime.o
    LINK test-chmtime
    CC test-genrandom.o
    LINK test-genrandom
    CC test-date.o
    LINK test-date
    CC test-delta.o
    LINK test-delta
    CC test-sha1.o
    LINK test-sha1
    CC test-match-trees.o
    LINK test-match-trees
    CC test-absolute-path.o
    LINK test-absolute-path
    CC test-parse-options.o
    LINK test-parse-options
make[1]: Leaving directory `/build/buildd/git-core-1.5.4.3'
test -z 'test' || \
	  DESTDIR='/build/buildd/git-core-1.5.4.3/debian/git'-core /usr/bin/make test \
	    CC='gcc' CFLAGS='-g -Wall -O2' NO_OPENSSL=1 GITWEB_CONFIG=/etc/gitweb.conf prefix=/usr mandir=/usr/share/man INSTALLDIRS=vendor WITH_P4IMPORT=1 PYTHON_PATH=/usr/bin/python TCLTK_PATH=/usr/bin/wish8.4 || \
	  GIT_TEST_OPTS=--verbose DESTDIR='/build/buildd/git-core-1.5.4.3/debian/git'-core /usr/bin/make test \
	    CC='gcc' CFLAGS='-g -Wall -O2' NO_OPENSSL=1 GITWEB_CONFIG=/etc/gitweb.conf prefix=/usr mandir=/usr/share/man INSTALLDIRS=vendor WITH_P4IMPORT=1 PYTHON_PATH=/usr/bin/python TCLTK_PATH=/usr/bin/wish8.4
make[1]: Entering directory `/build/buildd/git-core-1.5.4.3'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/git-gui'
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/git-gui'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/gitk-git'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/gitk-git'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/perl'
make[3]: Entering directory `/build/buildd/git-core-1.5.4.3/perl'
make[3]: Leaving directory `/build/buildd/git-core-1.5.4.3/perl'
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/perl'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/templates'
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/templates'
/usr/bin/make -C t/ all
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/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.
*   ok 3: git update-index without --add should fail adding.
*   ok 4: git update-index with --add should succeed.
*   ok 5: writing tree out with git write-tree
*   ok 6: validate object ID of a known tree.
*   ok 7: git update-index without --remove should fail removing.
*   ok 8: git update-index with --remove should be able to remove.
*   ok 9: git write-tree should be able to write an empty tree.
*   ok 10: validate object ID of a known tree.
*   ok 11: adding various types of objects with git update-index --add.
*   ok 12: showing stage with git ls-files --stage
*   ok 13: validate git ls-files output for a known tree.
*   ok 14: writing tree out with git write-tree.
*   ok 15: validate object ID for a known tree.
*   ok 16: showing tree with git ls-tree
*   ok 17: git ls-tree output for a known tree.
*   ok 18: showing tree with git ls-tree -r
*   ok 19: git ls-tree -r output for a known tree.
*   ok 20: showing tree with git ls-tree -r -t
*   ok 21: git ls-tree -r output for a known tree.
*   ok 22: writing partial tree out with git write-tree --prefix.
*   ok 23: validate object ID for a known tree.
*   ok 24: writing partial tree out with git write-tree --prefix.
*   ok 25: validate object ID for a known tree.
*   ok 26: put invalid objects into the index.
*   ok 27: writing this tree without --missing-ok.
*   ok 28: writing this tree with --missing-ok.
*   ok 29: git read-tree followed by write-tree should be idempotent.
*   ok 30: validate git diff-files output for a know cache/work tree state.
*   ok 31: git update-index --refresh should succeed.
*   ok 32: no diff after checkout and git update-index --refresh.
*   ok 33: git commit-tree records the correct tree in a commit.
*   ok 34: git commit-tree records the correct parent in a commit.
*   ok 35: git commit-tree omits duplicated parent in a commit.
*   ok 36: update-index D/F conflict
*   ok 37: absolute path works as expected
* passed all 37 test(s)
*** t0001-init.sh ***
*   ok 1: plain
*   ok 2: plain with GIT_WORK_TREE
*   ok 3: plain bare
*   ok 4: plain bare with GIT_WORK_TREE
*   ok 5: GIT_DIR bare
*   ok 6: GIT_DIR non-bare
*   ok 7: GIT_DIR & GIT_WORK_TREE (1)
*   ok 8: GIT_DIR & GIT_WORK_TREE (2)
* passed all 8 test(s)
*** t0003-attributes.sh ***
*   ok 1: setup
*   ok 2: attribute test
* passed all 2 test(s)
*** t0010-racy-git.sh ***
*   ok 1: Racy GIT trial #0 part A
*   ok 2: Racy GIT trial #0 part B
*   ok 3: Racy GIT trial #1 part A
*   ok 4: Racy GIT trial #1 part B
*   ok 5: Racy GIT trial #2 part A
*   ok 6: Racy GIT trial #2 part B
*   ok 7: Racy GIT trial #3 part A
*   ok 8: Racy GIT trial #3 part B
*   ok 9: Racy GIT trial #4 part A
*   ok 10: Racy GIT trial #4 part B
* passed all 10 test(s)
*** t0020-crlf.sh ***
*   ok 1: setup
*   ok 2: update with autocrlf=input
*   ok 3: update with autocrlf=true
*   ok 4: checkout with autocrlf=true
*   ok 5: checkout with autocrlf=input
*   ok 6: apply patch (autocrlf=input)
*   ok 7: apply patch --cached (autocrlf=input)
*   ok 8: apply patch --index (autocrlf=input)
*   ok 9: apply patch (autocrlf=true)
*   ok 10: apply patch --cached (autocrlf=true)
*   ok 11: apply patch --index (autocrlf=true)
*   ok 12: .gitattributes says two is binary
*   ok 13: .gitattributes says two is input
*   ok 14: .gitattributes says two and three are text
*   ok 15: in-tree .gitattributes (1)
*   ok 16: in-tree .gitattributes (2)
*   ok 17: in-tree .gitattributes (3)
*   ok 18: in-tree .gitattributes (4)
*   ok 19: invalid .gitattributes (must not crash)
* passed all 19 test(s)
*** t0021-conversion.sh ***
*   ok 1: setup
*   ok 2: check
*   ok 3: expanded_in_repo
* passed all 3 test(s)
*** t0022-crlf-rename.sh ***
*   ok 1: setup
*   ok 2: diff -M
* passed all 2 test(s)
*** t0023-crlf-am.sh ***
*   ok 1: setup
*   ok 2: am
* passed all 2 test(s)
*** t0030-stripspace.sh ***
*   ok 1: long lines without spaces should be unchanged
*   ok 2: lines with spaces at the beginning should be unchanged
*   ok 3: lines with intermediate spaces should be unchanged
*   ok 4: consecutive blank lines should be unified
*   ok 5: only consecutive blank lines should be completely removed
*   ok 6: consecutive blank lines at the beginning should be removed
*   ok 7: consecutive blank lines at the end should be removed
*   ok 8: text without newline at end should end with newline
*   ok 9: text plus spaces without newline at end should end with newline
*   ok 10: text plus spaces without newline at end should not show spaces
*   ok 11: text plus spaces without newline should show the correct lines
*   ok 12: text plus spaces at end should not show spaces
*   ok 13: text plus spaces at end should be cleaned and newline must remain
*   ok 14: spaces with newline at end should be replaced with empty string
*   ok 15: spaces without newline at end should not show spaces
*   ok 16: spaces without newline at end should be replaced with empty string
*   ok 17: consecutive text lines should be unchanged
*   ok 18: strip comments, too
* passed all 18 test(s)
*** t0040-parse-options.sh ***
*   ok 1: test help
*   ok 2: short options
*   ok 3: long options
*   ok 4: intermingled arguments
*   ok 5: unambiguously abbreviated option
*   ok 6: unambiguously abbreviated option with "="
*   ok 7: ambiguously abbreviated option
*   ok 8: non ambiguous option (after two options it abbreviates)
*   ok 9: detect possible typos
* passed all 9 test(s)
*** t1000-read-tree-m-3way.sh ***
*   ok 1: adding test file NN and Z/NN
*   ok 2: adding test file ND and Z/ND
*   ok 3: adding test file NM and Z/NM
*   ok 4: adding test file DN and Z/DN
*   ok 5: adding test file DD and Z/DD
*   ok 6: adding test file DM and Z/DM
*   ok 7: adding test file MN and Z/MN
*   ok 8: adding test file MD and Z/MD
*   ok 9: adding test file MM and Z/MM
*   ok 10: adding test file SS
*   ok 11: adding test file TT
*   ok 12: prepare initial tree
*   ok 13: change in branch A (removal)
*   ok 14: change in branch A (modification)
*   ok 15: change in branch A (modification)
*   ok 16: change in branch A (modification)
*   ok 17: change in branch A (modification)
*   ok 18: change in branch A (modification)
*   ok 19: change in branch A (modification)
*   ok 20: change in branch A (addition)
*   ok 21: change in branch A (addition)
*   ok 22: change in branch A (addition)
*   ok 23: change in branch A (addition)
*   ok 24: change in branch A (addition)
*   ok 25: change in branch A (edit)
*   ok 26: change in branch A (change file to directory)
*   ok 27: recording branch A tree
*   ok 28: reading original tree and checking out
*   ok 29: change in branch B (removal)
*   ok 30: change in branch B (modification)
*   ok 31: change in branch B (modification)
*   ok 32: change in branch B (modification)
*   ok 33: change in branch B (modification)
*   ok 34: change in branch B (modification)
*   ok 35: change in branch B (modification)
*   ok 36: change in branch B (addition)
*   ok 37: change in branch B (addition)
*   ok 38: change in branch B (addition)
*   ok 39: change in branch B (addition)
*   ok 40: change in branch B (addition and modification)
*   ok 41: change in branch B (modification)
*   ok 42: change in branch B (addition of a file to conflict with directory)
*   ok 43: recording branch B tree
*   ok 44: keep contents of 3 trees for easy access
*   ok 45: 3-way merge with git read-tree -m, empty cache
*   ok 46: 3-way merge with git read-tree -m, match H
*   ok 47: 1 - must not have an entry not in A.
*   ok 48: 2 - must match B in !O && !A && B case.
*   ok 49: 2 - matching B alone is OK in !O && !A && B case.
*   ok 50: 3 - must match A in !O && A && !B case.
*   ok 51: 3 - matching A alone is OK in !O && A && !B case.
*   ok 52: 3 (fail) - must match A in !O && A && !B case.
*   ok 53: 4 - must match and be up-to-date in !O && A && B && A!=B case.
*   ok 54: 4 (fail) - must match and be up-to-date in !O && A && B && A!=B case.
*   ok 55: 4 (fail) - must match and be up-to-date in !O && A && B && A!=B case.
*   ok 56: 5 - must match in !O && A && B && A==B case.
*   ok 57: 5 - must match in !O && A && B && A==B case.
*   ok 58: 5 (fail) - must match A in !O && A && B && A==B case.
*   ok 59: 6 - must not exist in O && !A && !B case
*   ok 60: 7 - must not exist in O && !A && B && O!=B case
*   ok 61: 8 - must not exist in O && !A && B && O==B case
*   ok 62: 9 - must match and be up-to-date in O && A && !B && O!=A case
*   ok 63: 9 (fail) - must match and be up-to-date in O && A && !B && O!=A case
*   ok 64: 9 (fail) - must match and be up-to-date in O && A && !B && O!=A case
*   ok 65: 10 - must match and be up-to-date in O && A && !B && O==A case
*   ok 66: 10 (fail) - must match and be up-to-date in O && A && !B && O==A case
*   ok 67: 10 (fail) - must match and be up-to-date in O && A && !B && O==A case
*   ok 68: 11 - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case
*   ok 69: 11 (fail) - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case
*   ok 70: 11 (fail) - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case
*   ok 71: 12 - must match A in O && A && B && O!=A && A==B case
*   ok 72: 12 - must match A in O && A && B && O!=A && A==B case
*   ok 73: 12 (fail) - must match A in O && A && B && O!=A && A==B case
*   ok 74: 13 - must match A in O && A && B && O!=A && O==B case
*   ok 75: 13 - must match A in O && A && B && O!=A && O==B case
*   ok 76: 14 - must match and be up-to-date in O && A && B && O==A && O!=B case
*   ok 77: 14 - may match B in O && A && B && O==A && O!=B case
*   ok 78: 14 (fail) - must match and be up-to-date in O && A && B && O==A && O!=B case
*   ok 79: 14 (fail) - must match and be up-to-date in O && A && B && O==A && O!=B case
*   ok 80: 15 - must match A in O && A && B && O==A && O==B case
*   ok 81: 15 - must match A in O && A && B && O==A && O==B case
*   ok 82: 15 (fail) - must match A in O && A && B && O==A && O==B case
*   ok 83: 16 - A matches in one and B matches in another.
* passed all 83 test(s)
*** t1001-read-tree-m-2way.sh ***
*   ok 1: setup
*   ok 2: 1, 2, 3 - no carry forward
*   ok 3: 4 - carry forward local addition.
*   ok 4: 5 - carry forward local addition.
*   ok 5: 6 - local addition already has the same.
*   ok 6: 7 - local addition already has the same.
*   ok 7: 8 - conflicting addition.
*   ok 8: 9 - conflicting addition.
*   ok 9: 10 - path removed.
*   ok 10: 11 - dirty path removed.
*   ok 11: 12 - unmatching local changes being removed.
*   ok 12: 13 - unmatching local changes being removed.
*   ok 13: 14 - unchanged in two heads.
*   ok 14: 15 - unchanged in two heads.
*   ok 15: 16 - conflicting local change.
*   ok 16: 17 - conflicting local change.
*   ok 17: 18 - local change already having a good result.
*   ok 18: 19 - local change already having a good result, further modified.
*   ok 19: 20 - no local change, use new tree.
*   ok 20: 21 - no local change, dirty cache.
*   ok 21: 22 - local change cache updated.
*   ok 22: DF vs DF/DF case setup.
*   ok 23: DF vs DF/DF case test.
* passed all 23 test(s)
*** t1002-read-tree-m-u-2way.sh ***
*   ok 1: setup
*   ok 2: 1, 2, 3 - no carry forward
*   ok 3: 4 - carry forward local addition.
*   ok 4: 5 - carry forward local addition.
*   ok 5: 6 - local addition already has the same.
*   ok 6: 7 - local addition already has the same.
*   ok 7: 8 - conflicting addition.
*   ok 8: 9 - conflicting addition.
*   ok 9: 10 - path removed.
*   ok 10: 11 - dirty path removed.
*   ok 11: 12 - unmatching local changes being removed.
*   ok 12: 13 - unmatching local changes being removed.
*   ok 13: 14 - unchanged in two heads.
*   ok 14: 15 - unchanged in two heads.
*   ok 15: 16 - conflicting local change.
*   ok 16: 17 - conflicting local change.
*   ok 17: 18 - local change already having a good result.
*   ok 18: 19 - local change already having a good result, further modified.
*   ok 19: 20 - no local change, use new tree.
*   ok 20: 21 - no local change, dirty cache.
*   ok 21: DF vs DF/DF case setup.
*   ok 22: DF vs DF/DF case test.
* passed all 22 test(s)
*** t1003-read-tree-prefix.sh ***
*   ok 1: setup
*   ok 2: read-tree --prefix
* passed all 2 test(s)
*** t1004-read-tree-m-u-wf.sh ***
*   ok 1: two-way setup
*   ok 2: two-way not clobbering
*   ok 3: two-way with incorrect --exclude-per-directory (1)
*   ok 4: two-way with incorrect --exclude-per-directory (2)
*   ok 5: two-way clobbering a ignored file
*   ok 6: three-way not complaining on an untracked path in both
*   ok 7: three-way not clobbering a working tree file
*   ok 8: three-way not complaining on an untracked file
* passed all 8 test(s)
*** t1020-subdirectory.sh ***
*   ok 1: setup
*   ok 2: update-index and ls-files
*   ok 3: cat-file
*   ok 4: diff-files
*   ok 5: write-tree
*   ok 6: checkout-index
*   ok 7: read-tree
*   ok 8: no file/rev ambiguity check inside .git
*   ok 9: no file/rev ambiguity check inside a bare repo
*   ok 10: detection should not be fooled by a symlink
* passed all 10 test(s)
*** t1100-commit-tree-options.sh ***
*   ok 1: test preparation: write empty tree
*   ok 2: construct commit
*   ok 3: read commit
*   ok 4: compare commit
* passed all 4 test(s)
*** t1200-tutorial.sh ***
*   ok 1: blob
*   ok 2: blob 557db03
*   ok 3: git diff-files -p
*   ok 4: git diff
*   ok 5: tree
*   ok 6: git diff-index -p HEAD
*   ok 7: git diff HEAD
*   ok 8: git whatchanged -p --root
*   ok 9: git tag my-first-tag
M	hello
Switched to a new branch "mybranch"
*   ok 10: git checkout -b mybranch
*   ok 11: git branch
M	hello
Already on branch "mybranch"
Created commit ab99871: Some work.
 1 files changed, 2 insertions(+), 0 deletions(-)
Switched to branch "master"
Created commit 6fa4906: Some fun.
 2 files changed, 2 insertions(+), 0 deletions(-)
*   ok 12: git resolve now fails
Created commit 67c353b: Merged "mybranch" changes.
* passed all 12 test(s)
*** t1300-repo-config.sh ***
*   ok 1: initial
*   ok 2: mixed case
*   ok 3: similar section
*   ok 4: similar section
*   ok 5: replace with non-match
*   ok 6: replace with non-match (actually matching)
*   ok 7: non-match result
*   ok 8: unset with cont. lines
*   ok 9: unset with cont. lines is correct
*   ok 10: multiple unset
*   ok 11: multiple unset is correct
*   ok 12: --replace-all
*   ok 13: all replaced
*   ok 14: really mean test
*   ok 15: really really mean test
*   ok 16: get value
*   ok 17: unset
*   ok 18: multivar
*   ok 19: non-match
*   ok 20: non-match value
*   ok 21: ambiguous get
*   ok 22: get multivar
*   ok 23: multivar replace
*   ok 24: ambiguous value
*   ok 25: ambiguous unset
*   ok 26: invalid unset
*   ok 27: multivar unset
*   ok 28: invalid key
*   ok 29: correct key
*   ok 30: hierarchical section
*   ok 31: hierarchical section value
*   ok 32: working --list
*   ok 33: --get-regexp
*   ok 34: --add
*   ok 35: get variable with no value
*   ok 36: get variable with empty value
*   ok 37: get-regexp variable with no value
*   ok 38: get-regexp variable with empty value
*   ok 39: get bool variable with no value
*   ok 40: get bool variable with empty value
*   ok 41: no arguments, but no crash
*   ok 42: new section is partial match of another
*   ok 43: new variable inserts into proper section
*   ok 44: alternative GIT_CONFIG (non-existing file should fail)
*   ok 45: alternative GIT_CONFIG
*   ok 46: alternative GIT_CONFIG (--file)
*   ok 47: --set in alternative GIT_CONFIG
*   ok 48: rename section
*   ok 49: rename succeeded
*   ok 50: rename non-existing section
*   ok 51: rename succeeded
*   ok 52: rename another section
*   ok 53: rename succeeded
*   ok 54: remove section
*   ok 55: section was removed properly
*   ok 56: section ending
*   ok 57: numbers
*   ok 58: invalid unit
*   ok 59: bool
*   ok 60: invalid bool (--get)
*   ok 61: invalid bool (set)
*   ok 62: set --bool
*   ok 63: set --int
*   ok 64: quoting
*   ok 65: key with newline
*   ok 66: value with newline
*   ok 67: value continued on next line
*   ok 68: --null --list
*   ok 69: --null --get-regexp
*   ok 70: symlinked configuration
* passed all 70 test(s)
*** t1301-shared-repo.sh ***
*   ok 1: shared=all
*   ok 2: update-server-info honors core.sharedRepository
* passed all 2 test(s)
*** t1302-repo-version.sh ***
*   ok 1: gitdir selection on normal repos
*   ok 2: gitdir selection on unsupported repo
*   ok 3: gitdir not required mode
*   ok 4: gitdir required mode on normal repos
*   ok 5: gitdir required mode on unsupported repo
* passed all 5 test(s)
*** t1303-wacky-config.sh ***
*   ok 1: modify same key
*   ok 2: add key in same section
*   ok 3: add key in different section
* passed all 3 test(s)
*** t1400-update-ref.sh ***
*   ok 1: setup
*   ok 2: create refs/heads/master
*   ok 3: create refs/heads/master
*   ok 4: fail to create refs/heads/gu/fixes
*   ok 5: create refs/heads/master (by HEAD)
*   ok 6: create refs/heads/master (by HEAD)
*   ok 7: (not) create HEAD with old sha1
*   ok 8: (not) prior created .git/refs/heads/master
*   ok 9: create HEAD
*   ok 10: (not) change HEAD with wrong SHA1
*   ok 11: (not) changed .git/refs/heads/master
*   ok 12: create refs/heads/master (logged by touch)
*   ok 13: update refs/heads/master (logged by touch)
*   ok 14: set refs/heads/master (logged by touch)
*   ok 15: verifying refs/heads/master's log
*   ok 16: enable core.logAllRefUpdates
*   ok 17: create refs/heads/master (logged by config)
*   ok 18: update refs/heads/master (logged by config)
*   ok 19: set refs/heads/master (logged by config)
*   ok 20: verifying refs/heads/master's log
*   ok 21: Query "master@{May 25 2005}" (before history)
*   ok 22: Query master@{2005-05-25} (before history)
*   ok 23: Query "master@{May 26 2005 23:31:59}" (1 second before history)
*   ok 24: Query "master@{May 26 2005 23:32:00}" (exactly history start)
*   ok 25: Query "master@{2005-05-26 23:33:01}" (middle of history with gap)
*   ok 26: Query "master@{2005-05-26 23:38:00}" (middle of history)
*   ok 27: Query "master@{2005-05-26 23:43:00}" (exact end of history)
*   ok 28: Query "master@{2005-05-28}" (past end of history)
*   ok 29: creating initial files
*   ok 30: git-commit logged updates
*   ok 31: git cat-file blob master:F (expect OTHER)
*   ok 32: git cat-file blob master@{2005-05-26 23:30}:F (expect TEST)
*   ok 33: git cat-file blob master@{2005-05-26 23:42}:F (expect OTHER)
* passed all 33 test(s)
*** t1410-reflog.sh ***
*   ok 1: setup
*   ok 2: rewind
*   ok 3: corrupt and check
*   ok 4: reflog expire --dry-run should not touch reflog
*   ok 5: reflog expire
*   ok 6: prune and fsck
*   ok 7: recover and check
*   ok 8: prune --expire
* passed all 8 test(s)
*** t1420-lost-found.sh ***
*   ok 1: setup
*   ok 2: lost and found something
* passed all 2 test(s)
*** t1500-rev-parse.sh ***
*   ok 1: toplevel: is-bare-repository
*   ok 2: toplevel: is-inside-git-dir
*   ok 3: toplevel: is-inside-work-tree
*   ok 4: toplevel: prefix
*   ok 5: .git/: is-bare-repository
*   ok 6: .git/: is-inside-git-dir
*   ok 7: .git/: is-inside-work-tree
*   ok 8: .git/: prefix
*   ok 9: .git/objects/: is-bare-repository
*   ok 10: .git/objects/: is-inside-git-dir
*   ok 11: .git/objects/: is-inside-work-tree
*   ok 12: .git/objects/: prefix
*   ok 13: subdirectory: is-bare-repository
*   ok 14: subdirectory: is-inside-git-dir
*   ok 15: subdirectory: is-inside-work-tree
*   ok 16: subdirectory: prefix
*   ok 17: core.bare = true: is-bare-repository
*   ok 18: core.bare = true: is-inside-git-dir
*   ok 19: core.bare = true: is-inside-work-tree
*   ok 20: core.bare undefined: is-bare-repository
*   ok 21: core.bare undefined: is-inside-git-dir
*   ok 22: core.bare undefined: is-inside-work-tree
*   ok 23: GIT_DIR=../.git, core.bare = false: is-bare-repository
*   ok 24: GIT_DIR=../.git, core.bare = false: is-inside-git-dir
*   ok 25: GIT_DIR=../.git, core.bare = false: is-inside-work-tree
*   ok 26: GIT_DIR=../.git, core.bare = false: prefix
*   ok 27: GIT_DIR=../.git, core.bare = true: is-bare-repository
*   ok 28: GIT_DIR=../.git, core.bare = true: is-inside-git-dir
*   ok 29: GIT_DIR=../.git, core.bare = true: is-inside-work-tree
*   ok 30: GIT_DIR=../.git, core.bare = true: prefix
*   ok 31: GIT_DIR=../.git, core.bare undefined: is-bare-repository
*   ok 32: GIT_DIR=../.git, core.bare undefined: is-inside-git-dir
*   ok 33: GIT_DIR=../.git, core.bare undefined: is-inside-work-tree
*   ok 34: GIT_DIR=../.git, core.bare undefined: prefix
*   ok 35: GIT_DIR=../repo.git, core.bare = false: is-bare-repository
*   ok 36: GIT_DIR=../repo.git, core.bare = false: is-inside-git-dir
*   ok 37: GIT_DIR=../repo.git, core.bare = false: is-inside-work-tree
*   ok 38: GIT_DIR=../repo.git, core.bare = false: prefix
*   ok 39: GIT_DIR=../repo.git, core.bare = true: is-bare-repository
*   ok 40: GIT_DIR=../repo.git, core.bare = true: is-inside-git-dir
*   ok 41: GIT_DIR=../repo.git, core.bare = true: is-inside-work-tree
*   ok 42: GIT_DIR=../repo.git, core.bare = true: prefix
*   ok 43: GIT_DIR=../repo.git, core.bare undefined: is-bare-repository
*   ok 44: GIT_DIR=../repo.git, core.bare undefined: is-inside-git-dir
*   ok 45: GIT_DIR=../repo.git, core.bare undefined: is-inside-work-tree
*   ok 46: GIT_DIR=../repo.git, core.bare undefined: prefix
* passed all 46 test(s)
*** t1501-worktree.sh ***
* core.worktree = relative path
*   ok 1: outside: is-bare-repository
*   ok 2: outside: is-inside-git-dir
*   ok 3: outside: is-inside-work-tree
*   ok 4: inside: is-bare-repository
*   ok 5: inside: is-inside-git-dir
*   ok 6: inside: is-inside-work-tree
*   ok 7: inside: prefix
*   ok 8: subdirectory: is-bare-repository
*   ok 9: subdirectory: is-inside-git-dir
*   ok 10: subdirectory: is-inside-work-tree
*   ok 11: subdirectory: prefix
* core.worktree = absolute path
*   ok 12: outside: is-bare-repository
*   ok 13: outside: is-inside-git-dir
*   ok 14: outside: is-inside-work-tree
*   ok 15: inside: is-bare-repository
*   ok 16: inside: is-inside-git-dir
*   ok 17: inside: is-inside-work-tree
*   ok 18: inside: prefix
*   ok 19: subdirectory: is-bare-repository
*   ok 20: subdirectory: is-inside-git-dir
*   ok 21: subdirectory: is-inside-work-tree
*   ok 22: subdirectory: prefix
* GIT_WORK_TREE=relative path (override core.worktree)
*   ok 23: outside: is-bare-repository
*   ok 24: outside: is-inside-git-dir
*   ok 25: outside: is-inside-work-tree
*   ok 26: inside: is-bare-repository
*   ok 27: inside: is-inside-git-dir
*   ok 28: inside: is-inside-work-tree
*   ok 29: inside: prefix
*   ok 30: subdirectory: is-bare-repository
*   ok 31: subdirectory: is-inside-git-dir
*   ok 32: subdirectory: is-inside-work-tree
*   ok 33: subdirectory: prefix
* GIT_WORK_TREE=absolute path, work tree below git dir
*   ok 34: outside: is-bare-repository
*   ok 35: outside: is-inside-git-dir
*   ok 36: outside: is-inside-work-tree
*   ok 37: in repo.git: is-bare-repository
*   ok 38: in repo.git: is-inside-git-dir
*   ok 39: in repo.git: is-inside-work-tree
*   ok 40: in repo.git/objects: is-bare-repository
*   ok 41: in repo.git/objects: is-inside-git-dir
*   ok 42: in repo.git/objects: is-inside-work-tree
*   ok 43: in repo.git/work: is-bare-repository
*   ok 44: in repo.git/work: is-inside-git-dir
*   ok 45: in repo.git/work: is-inside-work-tree
*   ok 46: in repo.git/work: prefix
*   ok 47: in repo.git/sub/dir: is-bare-repository
*   ok 48: in repo.git/sub/dir: is-inside-git-dir
*   ok 49: in repo.git/sub/dir: is-inside-work-tree
*   ok 50: in repo.git/sub/dir: prefix
*   ok 51: repo finds its work tree
*   ok 52: repo finds its work tree from work tree, too
*   ok 53: _gently() groks relative GIT_DIR & GIT_WORK_TREE
* passed all 53 test(s)
*** t2000-checkout-cache-clash.sh ***
*   ok 1: git update-index --add various paths.
*   ok 2: git checkout-index without -f should fail on conflicting work tree.
*   ok 3: git checkout-index with -f should succeed.
*   ok 4: git checkout-index conflicting paths.
* passed all 4 test(s)
*** t2001-checkout-cache-clash.sh ***
*   ok 1: git update-index --add path0/file0
*   ok 2: writing tree out with git write-tree
*   ok 3: git update-index --add path1/file1
*   ok 4: writing tree out with git write-tree
*   ok 5: read previously written tree and checkout.
*   ok 6: git update-index --add a symlink.
*   ok 7: writing tree out with git write-tree
*   ok 8: read previously written tree and checkout.
*   ok 9: checking out conflicting path with -f
* passed all 9 test(s)
*** t2002-checkout-cache-u.sh ***
*   ok 1: preparation
*   ok 2: without -u, git checkout-index smudges stat information.
*   ok 3: with -u, git checkout-index picks up stat information from new files.
* passed all 3 test(s)
*** t2003-checkout-cache-mkdir.sh ***
*   ok 1: setup
*   ok 2: have symlink in place where dir is expected.
*   ok 3: use --prefix=path2/
*   ok 4: use --prefix=tmp-
*   ok 5: use --prefix=tmp- but with a conflicting file and dir
*   ok 6: use --prefix=tmp/orary/ where tmp is a symlink
*   ok 7: use --prefix=tmp/orary- where tmp is a symlink
*   ok 8: use --prefix=tmp- where tmp-path1 is a symlink
* passed all 8 test(s)
*** t2004-checkout-cache-temp.sh ***
*   ok 1: preparation
*   ok 2: checkout one stage 0 to temporary file
*   ok 3: checkout all stage 0 to temporary files
*   ok 4: prepare 3-way merge
*   ok 5: checkout one stage 2 to temporary file
*   ok 6: checkout all stage 2 to temporary files
*   ok 7: checkout all stages/one file to nothing
*   ok 8: checkout all stages/one file to temporary files
*   ok 9: checkout some stages/one file to temporary files
*   ok 10: checkout all stages/all files to temporary files
*   ok 11: -- path0: no entry
*   ok 12: -- path1: all 3 stages
*   ok 13: -- path2: no stage 1, have stage 2 and 3
*   ok 14: -- path3: no stage 2, have stage 1 and 3
*   ok 15: -- path4: no stage 3, have stage 1 and 3
*   ok 16: -- asubdir/path5: no stage 2 and 3 have stage 1
*   ok 17: checkout --temp within subdir
*   ok 18: checkout --temp symlink
* passed all 18 test(s)
*** t2005-checkout-index-symlinks.sh ***
*   ok 1: preparation
*   ok 2: the checked-out symlink must be a file
*   ok 3: the file must be the blob we added during the setup
* passed all 3 test(s)
*** t2007-checkout-symlink.sh ***
*   ok 1: setup
*   ok 2: switch from symlink to dir
Already on branch "master"
*   ok 3: switch from dir to symlink
* passed all 3 test(s)
*** t2008-checkout-subdir.sh ***
*   ok 1: setup
*   ok 2: remove and restore with relative path
*   ok 3: checkout with empty prefix
*   ok 4: checkout with simple prefix
*   ok 5: relative path outside tree should fail
*   ok 6: incorrect relative path to file should fail (1)
*   ok 7: incorrect relative path should fail (2)
*   ok 8: incorrect relative path should fail (3)
* passed all 8 test(s)
*** t2050-git-dir-relative.sh ***
*   ok 1: Setting up post-commit hook
*   ok 2: post-commit hook used ordinarily
*   ok 3: post-commit-hook created and used from top dir
*   ok 4: post-commit-hook from sub dir
* passed all 4 test(s)
*** t2100-update-cache-badpath.sh ***
*   ok 1: git update-index --add to add various paths.
*   ok 2: git update-index to add conflicting path path0/file0 should fail.
*   ok 3: git update-index to add conflicting path path1/file1 should fail.
*   ok 4: git update-index to add conflicting path path2 should fail.
*   ok 5: git update-index to add conflicting path path3 should fail.
* passed all 5 test(s)
*** t2101-update-index-reupdate.sh ***
*   ok 1: update-index --add
*   ok 2: update-index --again
*   ok 3: update-index --remove --again
*   ok 4: first commit
*   ok 5: update-index again
*   ok 6: update-index --update from subdir
*   ok 7: update-index --update with pathspec
* passed all 7 test(s)
*** t2102-update-index-symlinks.sh ***
*   ok 1: preparation
*   ok 2: modify the symbolic link
*   ok 3: the index entry must still be a symbolic link
* passed all 3 test(s)
*** t2200-add-update.sh ***
*   ok 1: setup
*   ok 2: update
*   ok 3: update noticed a removal
*   ok 4: update touched correct path
*   ok 5: update did not touch other tracked files
*   ok 6: update did not touch untracked files
*   ok 7: cache tree has not been corrupted
*   ok 8: update from a subdirectory
*   ok 9: change gets noticed
*   ok 10: replace a file with a symlink
*   ok 11: add everything changed
*   ok 12: touch and then add -u
*   ok 13: touch and then add explicitly
* passed all 13 test(s)
*** t3000-ls-files-others.sh ***
*   ok 1: git ls-files --others to show output.
*   ok 2: git ls-files --others should pick up symlinks.
*   ok 3: git ls-files --others --directory to show output.
*   ok 4: git ls-files --others --directory should not get confused.
* passed all 4 test(s)
*** t3001-ls-files-others-exclude.sh ***
*   ok 1: git ls-files --others with various exclude options.
*   ok 2: git ls-files --others with 
 line endings.
*   ok 3: git-status honours core.excludesfile
* passed all 3 test(s)
*** t3002-ls-files-dashpath.sh ***
*   ok 1: setup
*   ok 2: git ls-files without path restriction.
*   ok 3: git ls-files with path restriction.
*   ok 4: git ls-files with path restriction with --.
*   ok 5: git ls-files with path restriction with -- --.
*   ok 6: git ls-files with no path restriction.
* passed all 6 test(s)
*** t3010-ls-files-killed-modified.sh ***
*   ok 1: git update-index --add to add various paths.
*   ok 2: git ls-files -k to show killed files.
*   ok 3: validate git ls-files -k output.
*   ok 4: git ls-files -m to show modified files.
*   ok 5: validate git ls-files -m output.
* passed all 5 test(s)
*** t3020-ls-files-error-unmatch.sh ***
Created initial commit 87cf8a9: add foo bar
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bar
 create mode 100644 foo
*   ok 1: git ls-files --error-unmatch should fail with unmatched path.
*   ok 2: git ls-files --error-unmatch should succeed eith matched paths.
* passed all 2 test(s)
*** t3030-merge-recursive.sh ***
*   ok 1: setup 1
*   ok 2: setup 2
*   ok 3: setup 3
*   ok 4: setup 4
*   ok 5: setup 5
*   ok 6: setup 6
*   ok 7: merge-recursive simple
*   ok 8: merge-recursive result
*   ok 9: merge-recursive remove conflict
*   ok 10: merge-recursive remove conflict
*   ok 11: merge-recursive d/f simple
*   ok 12: merge-recursive result
*   ok 13: merge-recursive d/f conflict
*   ok 14: merge-recursive d/f conflict result
*   ok 15: merge-recursive d/f conflict the other way
*   ok 16: merge-recursive d/f conflict result the other way
*   ok 17: merge-recursive d/f conflict
*   ok 18: merge-recursive d/f conflict result
*   ok 19: merge-recursive d/f conflict
*   ok 20: merge-recursive d/f conflict result
*   ok 21: reset and 3-way merge
*   ok 22: reset and bind merge
* passed all 22 test(s)
*** t3040-subprojects-basic.sh ***
*   ok 1: Super project creation
*   ok 2: create subprojects
*   ok 3: check if fsck ignores the subprojects
*   ok 4: check if commit in a subproject detected
*   ok 5: check if a changed subproject HEAD can be committed
*   ok 6: check if diff-index works for subproject elements
*   ok 7: check if diff-tree works for subproject elements
*   ok 8: check if git diff works for subproject elements
*   ok 9: check if clone works
*   ok 10: removing and adding subproject
*   ok 11: checkout in superproject
* passed all 11 test(s)
*** t3050-subprojects-fetch.sh ***
*   ok 1: setup
*   ok 2: clone
*   ok 3: advance
*   ok 4: fetch
* passed all 4 test(s)
*** t3060-ls-files-with-tree.sh ***
*   ok 1: setup
*   ok 2: git -ls-files --with-tree should succeed from subdir
*   ok 3: git -ls-files --with-tree should add entries from named tree.
* passed all 3 test(s)
*** t3100-ls-tree-restrict.sh ***
*   ok 1: setup
*   ok 2: ls-tree plain
*   ok 3: ls-tree recursive
*   ok 4: ls-tree recursive with -t
*   ok 5: ls-tree recursive with -d
*   ok 6: ls-tree filtered with path
*   ok 7: ls-tree filtered with path1 path0
*   ok 8: ls-tree filtered with path0/
*   ok 9: ls-tree filtered with path2
*   ok 10: ls-tree filtered with path2/
*   ok 11: ls-tree filtered with path2/baz
*   ok 12: ls-tree filtered with path2/bak
*   ok 13: ls-tree -t filtered with path2/bak
* passed all 13 test(s)
*** t3101-ls-tree-dirname.sh ***
*   ok 1: setup
*   ok 2: ls-tree plain
*   ok 3: ls-tree recursive
*   ok 4: ls-tree filter 1.txt
*   ok 5: ls-tree filter path1/b/c/1.txt
*   ok 6: ls-tree filter all 1.txt files
*   ok 7: ls-tree filter directories
*   ok 8: ls-tree filter odd names
*   ok 9: ls-tree filter missing files and extra slashes
* passed all 9 test(s)
*** t3200-branch.sh ***
*   ok 1: prepare a trivial repository
*   ok 2: git branch --help should not have created a bogus branch
*   ok 3: git branch abc should create a branch
*   ok 4: git branch a/b/c should create a branch
*   ok 5: git branch -l d/e/f should create a branch and a log
*   ok 6: git branch -d d/e/f should delete a branch and a log
*   ok 7: git branch j/k should work after branch j has been deleted
*   ok 8: git branch l should work after branch l/m has been deleted
*   ok 9: git branch -m m m/m should work
*   ok 10: git branch -m n/n n should work
*   ok 11: git branch -m o/o o should fail when o/p exists
*   ok 12: git branch -m q r/q should fail when r exists
*   ok 13: git branch -m q q2 without config should succeed
*   ok 14: git branch -m s/s s should work when s/t is deleted
*   ok 15: config information was renamed, too
*   ok 16: git branch -m u v should fail when the reflog for u is a symlink
*   ok 17: test tracking setup via --track
*   ok 18: test tracking setup (non-wildcard, matching)
*   ok 19: test tracking setup (non-wildcard, not matching)
*   ok 20: test tracking setup via config
*   ok 21: avoid ambiguous track
*   ok 22: test overriding tracking setup via --no-track
*   ok 23: no tracking without .fetch entries
*   ok 24: test tracking setup via --track but deeper
*   ok 25: test deleting branch deletes branch config
*   ok 26: test deleting branch without config
*   ok 27: git checkout -b g/h/i -l should create a branch and a log
* passed all 27 test(s)
*** t3201-branch-contains.sh ***
*   ok 1: setup
*   ok 2: branch --contains=master
*   ok 3: branch --contains master
*   ok 4: branch --contains=side
* passed all 4 test(s)
*** t3210-pack-refs.sh ***
*   ok 1: prepare a trivial repository
*   ok 2: see if git show-ref works as expected
*   ok 3: see if a branch still exists when packed
*   ok 4: git branch c/d should barf if branch c exists
*   ok 5: see if a branch still exists after git pack-refs --prune
*   ok 6: see if git pack-refs --prune remove ref files
*   ok 7: git branch g should work when git branch g/h has been deleted
*   ok 8: git branch i/j/k should barf if branch i exists
*   ok 9: test git branch k after branch k/l/m and k/lm have been deleted
*   ok 10: test git branch n after some branch deletion and pruning
*   ok 11: pack, prune and repack
* passed all 11 test(s)
*** t3300-funny-names.sh ***
*   ok 1: git ls-files no-funny
*   ok 2: git ls-files with-funny
*   ok 3: git ls-files -z with-funny
*   ok 4: git ls-tree with funny
*   ok 5: git diff-index with-funny
*   ok 6: git diff-tree with-funny
*   ok 7: git diff-index -z with-funny
*   ok 8: git diff-tree -z with-funny
*   ok 9: git diff-tree -C with-funny
*   ok 10: git diff-tree delete with-funny
*   ok 11: git diff-tree delete with-funny
*   ok 12: git diff-tree delete with-funny
*   ok 13: git diff-tree rename with-funny applied
*   ok 14: git diff-tree delete with-funny applied
*   ok 15: git apply non-git diff
* passed all 15 test(s)
*** t3400-rebase.sh ***
*   ok 1: prepare repository with topic branches
*   ok 2: rebase against master
*   ok 3: the rebase operation should not have destroyed author information
*   ok 4: rebase after merge master
*   ok 5: rebase of history with merges is linearized
*   ok 6: rebase of history with merges after upstream merge is linearized
*   ok 7: rebase a single mode change
* passed all 7 test(s)
*** t3401-rebase-partial.sh ***
*   ok 1: prepare repository with topic branch
*   ok 2: pick top patch from topic branch into master
*   ok 3: rebase topic branch against new master and check git-am did not get halted
*   ok 4: rebase --merge topic branch that was partially merged upstream
* passed all 4 test(s)
*** t3402-rebase-merge.sh ***
*   ok 1: setup
*   ok 2: reference merge
*   ok 3: rebase
*   ok 4: test-rebase@{1} is pre rebase
*   ok 5: merge and rebase should match
*   ok 6: rebase the other way
*   ok 7: merge and rebase should match
*   ok 8: picking rebase
* passed all 8 test(s)
*** t3403-rebase-skip.sh ***
*   ok 1: setup
*   ok 2: rebase with git am -3 (default)
*   ok 3: rebase --skip with am -3
*   ok 4: rebase moves back to skip-reference
*   ok 5: checkout skip-merge
*   ok 6: rebase with --merge
*   ok 7: rebase --skip with --merge
*   ok 8: merge and reference trees equal
*   ok 9: moved back to branch correctly
* passed all 9 test(s)
*** t3404-rebase-interactive.sh ***
*   ok 1: setup
*   ok 2: no changes are a nop
*   ok 3: test the [branch] option
*   ok 4: rebase on top of a non-conflicting commit
*   ok 5: reflog for the branch shows state before rebase
*   ok 6: exchange two commits
*   ok 7: stop on conflicting pick
*   ok 8: abort
*   ok 9: retain authorship
*   ok 10: squash
*   ok 11: retain authorship when squashing
*   ok 12: -p handles "no changes" gracefully
*   ok 13: preserve merges with -p
*   ok 14: --continue tries to commit
*   ok 15: verbose flag is heeded, even after --continue
*   ok 16: multi-squash only fires up editor once
*   ok 17: squash works as expected
*   ok 18: interrupted squash works as expected
*   ok 19: interrupted squash works as expected (case 2)
*   ok 20: ignore patch if in upstream
*   ok 21: --continue tries to commit, even for "edit"
*   ok 22: rebase a detached HEAD
*   ok 23: rebase a commit violating pre-commit
*   ok 24: rebase with a file named HEAD in worktree
* passed all 24 test(s)
*** t3405-rebase-malformed.sh ***
*   ok 1: setup
*   ok 2: rebase
* passed all 2 test(s)
*** t3406-rebase-message.sh ***
*   ok 1: setup
*   ok 2: rebase -m
* passed all 2 test(s)
*** t3500-cherry.sh ***
*   ok 1: prepare repository with topic branch, and check cherry finds the 2 patches from there
*   ok 2: check that cherry with limit returns only the top patch
*   ok 3: cherry-pick one of the 2 patches, and check cherry recognized one and only one as new
* passed all 3 test(s)
*** t3501-revert-cherry-pick.sh ***
*   ok 1: setup
*   ok 2: cherry-pick after renaming branch
*   ok 3: revert after renaming branch
* passed all 3 test(s)
*** t3502-cherry-pick-merge.sh ***
*   ok 1: setup
*   ok 2: cherry-pick a non-merge with -m should fail
*   ok 3: cherry pick a merge without -m should fail
*   ok 4: cherry pick a merge (1)
*   ok 5: cherry pick a merge (2)
*   ok 6: cherry pick a merge relative to nonexistent parent should fail
*   ok 7: revert a non-merge with -m should fail
*   ok 8: revert a merge without -m should fail
*   ok 9: revert a merge (1)
*   ok 10: revert a merge (2)
*   ok 11: revert a merge relative to nonexistent parent should fail
* passed all 11 test(s)
*** t3600-rm.sh ***
*   ok 1: Initialize test directory
*   ok 2: Determine rm behavior
*   ok 3: Pre-check that foo exists and is in index before git rm foo
*   ok 4: Test that git rm foo succeeds
*   ok 5: Test that git rm --cached foo succeeds if the index matches the file
*   ok 6: Test that git rm --cached foo succeeds if the index matches the file
*   ok 7: Test that git rm --cached foo fails if the index matches neither the file nor HEAD
*   ok 8: Test that git rm --cached -f foo works in case where --cached only did not
*   ok 9: Post-check that foo exists but is not in index after git rm foo
*   ok 10: Pre-check that bar exists and is in index before "git rm bar"
*   ok 11: Test that "git rm bar" succeeds
*   ok 12: Post-check that bar does not exist and is not in index after "git rm -f bar"
*   ok 13: Test that "git rm -- -q" succeeds (remove a file that looks like an option)
*   ok 14: Test that "git rm -f" succeeds with embedded space, tab, or newline characters.
*   ok 15: Test that "git rm -f" fails if its rm fails
*   ok 16: When the rm in "git rm -f" fails, it should not remove the file from the index
*   ok 17: Remove nonexistent file with --ignore-unmatch
*   ok 18: "rm" command printed
*   ok 19: "rm" command suppressed with --quiet
*   ok 20: Re-add foo and baz
*   ok 21: Modify foo -- rm should refuse
*   ok 22: Modified foo -- rm -f should work
*   ok 23: Re-add foo and baz for HEAD tests
*   ok 24: foo is different in index from HEAD -- rm should refuse
*   ok 25: but with -f it should work.
*   ok 26: Recursive test setup
*   ok 27: Recursive without -r fails
*   ok 28: Recursive with -r but dirty
*   ok 29: Recursive with -r -f
*   ok 30: Remove nonexistent file returns nonzero exit status
* passed all 30 test(s)
*** t3700-add.sh ***
*   ok 1: Test of git add
*   ok 2: Post-check that foo is in the index
*   ok 3: Test that "git add -- -q" works
*   ok 4: git add: Test that executable bit is not used if core.filemode=0
*   ok 5: git add: filemode=0 should not get confused by symlink
*   ok 6: git update-index --add: Test that executable bit is not used...
*   ok 7: git add: filemode=0 should not get confused by symlink
*   ok 8: git update-index --add: Test that executable bit is not used...
*   ok 9: .gitignore test setup
*   ok 10: .gitignore is honored
*   ok 11: error out when attempting to add ignored ones without -f
*   ok 12: error out when attempting to add ignored ones without -f
*   ok 13: add ignored ones with -f
*   ok 14: add ignored ones with -f
*   ok 15: add ignored ones with -f
*   ok 16: .gitignore with subdirectory
*   ok 17: check correct prefix detection
*   ok 18: git add with filemode=0, symlinks=0, and unmerged entries
*   ok 19: git add with filemode=0, symlinks=0 prefers stage 2 over stage 1
*   ok 20: git add --refresh
* passed all 20 test(s)
*** t3800-mktag.sh ***
Created initial commit 03c9ac9: Initial commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 A
*   ok 1: Tag object length check
*   ok 2: "object" line label check
*   ok 3: "object" line SHA1 check
*   ok 4: "type" line label check
*   ok 5: "type" line eol check
*   ok 6: "tag" line label check #1
*   ok 7: "tag" line label check #2
*   ok 8: "type" line type-name length check
*   ok 9: verify object (SHA1/type) check
*   ok 10: verify tag-name check
*   ok 11: "tagger" line label check #1
*   ok 12: "tagger" line label check #2
*   ok 13: create valid tag
*   ok 14: check mytag
* passed all 14 test(s)
*** t3900-i18n-commit.sh ***
*   ok 1: setup
*   ok 2: no encoding header for base case
*   ok 3: ISO-8859-1 setup
*   ok 4: EUCJP setup
*   ok 5: ISO-2022-JP setup
*   ok 6: check encoding header for ISO-8859-1
*   ok 7: check encoding header for EUCJP
*   ok 8: check encoding header for ISO-2022-JP
*   ok 9: config to remove customization
*   ok 10: ISO-8859-1 should be shown in UTF-8 now
*   ok 11: EUCJP should be shown in UTF-8 now
*   ok 12: ISO-2022-JP should be shown in UTF-8 now
*   ok 13: config to add customization
*   ok 14: ISO-8859-1 should be shown in itself now
*   ok 15: EUCJP should be shown in itself now
*   ok 16: ISO-2022-JP should be shown in itself now
*   ok 17: config to tweak customization
*   ok 18: ISO-8859-1 should be shown in UTF-8 now
*   ok 19: EUCJP should be shown in UTF-8 now
*   ok 20: ISO-2022-JP should be shown in UTF-8 now
*   ok 21: EUCJP should be shown in EUCJP now
*   ok 22: ISO-2022-JP should be shown in EUCJP now
*   ok 23: EUCJP should be shown in ISO-2022-JP now
*   ok 24: ISO-2022-JP should be shown in ISO-2022-JP now
*   ok 25: No conversion with ISO-8859-1
*   ok 26: No conversion with EUCJP
*   ok 27: No conversion with ISO-2022-JP
* passed all 27 test(s)
*** t3901-i18n-patch.sh ***
*   ok 1: setup
*   ok 2: format-patch output (ISO-8859-1)
*   ok 3: format-patch output (UTF-8)
*   ok 4: rebase (U/U)
*   ok 5: rebase (U/L)
*   ok 6: rebase (L/L)
*   ok 7: rebase (L/U)
*   ok 8: cherry-pick(U/U)
*   ok 9: cherry-pick(L/L)
*   ok 10: cherry-pick(U/L)
*   ok 11: cherry-pick(L/U)
*   ok 12: rebase --merge (U/U)
*   ok 13: rebase --merge (U/L)
*   ok 14: rebase --merge (L/L)
*   ok 15: rebase --merge (L/U)
* passed all 15 test(s)
*** t3902-quoted.sh ***
*   ok 1: setup
*   ok 2: check fully quoted output from ls-files
*   ok 3: check fully quoted output from diff-files
*   ok 4: check fully quoted output from diff-index
*   ok 5: check fully quoted output from diff-tree
*   ok 6: setting core.quotepath
*   ok 7: check fully quoted output from ls-files
*   ok 8: check fully quoted output from diff-files
*   ok 9: check fully quoted output from diff-index
*   ok 10: check fully quoted output from diff-tree
* passed all 10 test(s)
*** t3903-stash.sh ***
*   ok 1: stash some dirty working directory
*   ok 2: parents of stash
*   ok 3: apply needs clean working directory
*   ok 4: apply stashed changes
*   ok 5: apply stashed changes (including index)
*   ok 6: unstashing in a subdirectory
* passed all 6 test(s)
*** t4000-diff-format.sh ***
*   ok 1: update-index --add two files with and without +x.
*   ok 2: git diff-files -p after editing work tree.
*   ok 3: validate git diff-files -p output.
* passed all 3 test(s)
*** t4001-diff-rename.sh ***
*   ok 1: update-index --add a file.
*   ok 2: write that tree.
*   ok 3: renamed and edited the file.
*   ok 4: git diff-index -p -M after rename and editing.
*   ok 5: validate the output.
*   ok 6: favour same basenames over different ones
*   ok 7: favour same basenames even with minor differences
* passed all 7 test(s)
*** t4002-diff-basic.sh ***
*   ok 1: adding test file NN and Z/NN
*   ok 2: adding test file ND and Z/ND
*   ok 3: adding test file NM and Z/NM
*   ok 4: adding test file DN and Z/DN
*   ok 5: adding test file DD and Z/DD
*   ok 6: adding test file DM and Z/DM
*   ok 7: adding test file MN and Z/MN
*   ok 8: adding test file MD and Z/MD
*   ok 9: adding test file MM and Z/MM
*   ok 10: adding test file SS
*   ok 11: adding test file TT
*   ok 12: prepare initial tree
*   ok 13: change in branch A (removal)
*   ok 14: change in branch A (modification)
*   ok 15: change in branch A (modification)
*   ok 16: change in branch A (modification)
*   ok 17: change in branch A (modification)
*   ok 18: change in branch A (modification)
*   ok 19: change in branch A (modification)
*   ok 20: change in branch A (addition)
*   ok 21: change in branch A (addition)
*   ok 22: change in branch A (addition)
*   ok 23: change in branch A (addition)
*   ok 24: change in branch A (addition)
*   ok 25: change in branch A (edit)
*   ok 26: change in branch A (change file to directory)
*   ok 27: recording branch A tree
*   ok 28: reading original tree and checking out
*   ok 29: change in branch B (removal)
*   ok 30: change in branch B (modification)
*   ok 31: change in branch B (modification)
*   ok 32: change in branch B (modification)
*   ok 33: change in branch B (modification)
*   ok 34: change in branch B (modification)
*   ok 35: change in branch B (modification)
*   ok 36: change in branch B (addition)
*   ok 37: change in branch B (addition)
*   ok 38: change in branch B (addition)
*   ok 39: change in branch B (addition)
*   ok 40: change in branch B (addition and modification)
*   ok 41: change in branch B (modification)
*   ok 42: change in branch B (addition of a file to conflict with directory)
*   ok 43: recording branch B tree
*   ok 44: keep contents of 3 trees for easy access
*   ok 45: diff-tree of known trees.
*   ok 46: diff-tree of known trees.
*   ok 47: diff-tree of known trees.
*   ok 48: diff-tree of known trees.
*   ok 49: diff-tree of known trees.
*   ok 50: diff-tree of known trees.
*   ok 51: diff-cache O with A in cache
*   ok 52: diff-cache O with B in cache
*   ok 53: diff-cache A with B in cache
*   ok 54: diff-files with O in cache and A checked out
*   ok 55: diff-files with O in cache and B checked out
*   ok 56: diff-files with A in cache and B checked out
*   ok 57: diff-tree O A == diff-tree -R A O
*   ok 58: diff-tree -r O A == diff-tree -r -R A O
*   ok 59: diff-tree B A == diff-tree -R A B
*   ok 60: diff-tree -r B A == diff-tree -r -R A B
* passed all 60 test(s)
*** t4003-diff-rename-1.sh ***
*   ok 1: prepare reference tree
*   ok 2: prepare work tree
*   ok 3: validate output from rename/copy detection (#1)
*   ok 4: prepare work tree again
*   ok 5: validate output from rename/copy detection (#2)
*   ok 6: prepare work tree once again
*   ok 7: validate output from rename/copy detection (#3)
* passed all 7 test(s)
*** t4004-diff-rename-symlink.sh ***
*   ok 1: prepare reference tree
*   ok 2: prepare work tree
*   ok 3: validate diff output
* passed all 3 test(s)
*** t4005-diff-rename-2.sh ***
*   ok 1: prepare reference tree
*   ok 2: prepare work tree
*   ok 3: validate output from rename/copy detection (#1)
*   ok 4: prepare work tree again
*   ok 5: validate output from rename/copy detection (#2)
*   ok 6: prepare work tree once again
*   ok 7: validate output from rename/copy detection (#3)
* passed all 7 test(s)
*** t4006-diff-mode.sh ***
*   ok 1: setup
*   ok 2: chmod
*   ok 3: verify
* passed all 3 test(s)
*** t4007-rename-3.sh ***
*   ok 1: prepare reference tree
*   ok 2: prepare work tree
*   ok 3: validate the result (#1)
*   ok 4: validate the result (#2)
*   ok 5: tweak work tree
*   ok 6: validate the result (#3)
*   ok 7: validate the result (#4)
* passed all 7 test(s)
*** t4008-diff-break-rewrite.sh ***
*   ok 1: setup
*   ok 2: change file1 with copy-edit of file0 and remove file0
*   ok 3: run diff with -B
*   ok 4: validate result of -B (#1)
*   ok 5: run diff with -B and -M
*   ok 6: validate result of -B -M (#2)
*   ok 7: swap file0 and file1
*   ok 8: run diff with -B
*   ok 9: validate result of -B (#3)
*   ok 10: run diff with -B and -M
*   ok 11: validate result of -B -M (#4)
*   ok 12: make file0 into something completely different
*   ok 13: run diff with -B
*   ok 14: validate result of -B (#5)
*   ok 15: run diff with -B -M
*   ok 16: validate result of -B -M (#6)
*   ok 17: run diff with -M
*   ok 18: validate result of -M (#7)
*   ok 19: file1 edited to look like file0 and file0 rename-edited to file2
*   ok 20: run diff with -B
*   ok 21: validate result of -B (#8)
*   ok 22: run diff with -B -M
*   ok 23: validate result of -B -M (#9)
* passed all 23 test(s)
*** t4009-diff-rename-4.sh ***
*   ok 1: prepare reference tree
*   ok 2: prepare work tree
*   ok 3: validate output from rename/copy detection (#1)
*   ok 4: prepare work tree again
*   ok 5: validate output from rename/copy detection (#2)
*   ok 6: prepare work tree once again
*   ok 7: validate output from rename/copy detection (#3)
* passed all 7 test(s)
*** t4010-diff-pathspec.sh ***
*   ok 1: setup
*   ok 2: limit to path should show nothing
*   ok 3: limit to path1 should show path1/file1
*   ok 4: limit to path1/ should show path1/file1
*   ok 5: limit to file0 should show file0
*   ok 6: limit to file0/ should emit nothing.
* passed all 6 test(s)
*** t4011-diff-symlink.sh ***
*   ok 1: diff new symlink
*   ok 2: diff unchanged symlink
*   ok 3: diff removed symlink
*   ok 4: diff identical, but newly created symlink
*   ok 5: diff different symlink
* passed all 5 test(s)
*** t4012-diff-binary.sh ***
*   ok 1: prepare repository
*   ok 2: diff without --binary
*   ok 3: diff with --binary
*   ok 4: apply detecting corrupt patch correctly
*   ok 5: apply detecting corrupt patch correctly
*   ok 6: initial commit
*   ok 7: diff-index with --binary
*   ok 8: apply binary patch
* passed all 8 test(s)
*** t4013-diff-various.sh ***
*   ok 1: setup
*   ok 2: git diff-tree initial
*   ok 3: git diff-tree -r initial
*   ok 4: git diff-tree -r --abbrev initial
*   ok 5: git diff-tree -r --abbrev=4 initial
*   ok 6: git diff-tree --root initial
*   ok 7: git diff-tree --root --abbrev initial
*   ok 8: git diff-tree --root -r initial
*   ok 9: git diff-tree --root -r --abbrev initial
*   ok 10: git diff-tree --root -r --abbrev=4 initial
*   ok 11: git diff-tree -p initial
*   ok 12: git diff-tree --root -p initial
*   ok 13: git diff-tree --patch-with-stat initial
*   ok 14: git diff-tree --root --patch-with-stat initial
*   ok 15: git diff-tree --patch-with-raw initial
*   ok 16: git diff-tree --root --patch-with-raw initial
*   ok 17: git diff-tree --pretty initial
*   ok 18: git diff-tree --pretty --root initial
*   ok 19: git diff-tree --pretty -p initial
*   ok 20: git diff-tree --pretty --stat initial
*   ok 21: git diff-tree --pretty --summary initial
*   ok 22: git diff-tree --pretty --stat --summary initial
*   ok 23: git diff-tree --pretty --root -p initial
*   ok 24: git diff-tree --pretty --root --stat initial
*   ok 25: git diff-tree --pretty --root --summary initial
*   ok 26: git diff-tree --pretty --root --summary -r initial
*   ok 27: git diff-tree --pretty --root --stat --summary initial
*   ok 28: git diff-tree --pretty --patch-with-stat initial
*   ok 29: git diff-tree --pretty --root --patch-with-stat initial
*   ok 30: git diff-tree --pretty --patch-with-raw initial
*   ok 31: git diff-tree --pretty --root --patch-with-raw initial
*   ok 32: git diff-tree --pretty=oneline initial
*   ok 33: git diff-tree --pretty=oneline --root initial
*   ok 34: git diff-tree --pretty=oneline -p initial
*   ok 35: git diff-tree --pretty=oneline --root -p initial
*   ok 36: git diff-tree --pretty=oneline --patch-with-stat initial
*   ok 37: git diff-tree --pretty=oneline --root --patch-with-stat initial
*   ok 38: git diff-tree --pretty=oneline --patch-with-raw initial
*   ok 39: git diff-tree --pretty=oneline --root --patch-with-raw initial
*   ok 40: git diff-tree --pretty side
*   ok 41: git diff-tree --pretty -p side
*   ok 42: git diff-tree --pretty --patch-with-stat side
*   ok 43: git diff-tree master
*   ok 44: git diff-tree -p master
*   ok 45: git diff-tree -p -m master
*   ok 46: git diff-tree -c master
*   ok 47: git diff-tree -c --abbrev master
*   ok 48: git diff-tree --cc master
*   ok 49: git diff-tree -c --stat master
*   ok 50: git diff-tree --cc --stat master
*   ok 51: git diff-tree -c --stat --summary master
*   ok 52: git diff-tree --cc --stat --summary master
*   ok 53: git diff-tree -c --stat --summary side
*   ok 54: git diff-tree --cc --stat --summary side
*   ok 55: git diff-tree --cc --patch-with-stat master
*   ok 56: git diff-tree --cc --patch-with-stat --summary master
*   ok 57: git diff-tree --cc --patch-with-stat --summary side
*   ok 58: git log master
*   ok 59: git log -p master
*   ok 60: git log --root master
*   ok 61: git log --root -p master
*   ok 62: git log --patch-with-stat master
*   ok 63: git log --root --patch-with-stat master
*   ok 64: git log --root --patch-with-stat --summary master
*   ok 65: git log --root -c --patch-with-stat --summary master
*   ok 66: git log --root --cc --patch-with-stat --summary master
*   ok 67: git log -SF master
*   ok 68: git log -SF -p master
*   ok 69: git whatchanged master
*   ok 70: git whatchanged -p master
*   ok 71: git whatchanged --root master
*   ok 72: git whatchanged --root -p master
*   ok 73: git whatchanged --patch-with-stat master
*   ok 74: git whatchanged --root --patch-with-stat master
*   ok 75: git whatchanged --root --patch-with-stat --summary master
*   ok 76: git whatchanged --root -c --patch-with-stat --summary master
*   ok 77: git whatchanged --root --cc --patch-with-stat --summary master
*   ok 78: git whatchanged -SF master
*   ok 79: git whatchanged -SF -p master
*   ok 80: git log --patch-with-stat master -- dir/
*   ok 81: git whatchanged --patch-with-stat master -- dir/
*   ok 82: git log --patch-with-stat --summary master -- dir/
*   ok 83: git whatchanged --patch-with-stat --summary master -- dir/
*   ok 84: git show initial
*   ok 85: git show --root initial
*   ok 86: git show side
*   ok 87: git show master
*   ok 88: git show --stat side
*   ok 89: git show --stat --summary side
*   ok 90: git show --patch-with-stat side
*   ok 91: git show --patch-with-raw side
*   ok 92: git show --patch-with-stat --summary side
*   ok 93: git format-patch --stdout initial..side
*   ok 94: git format-patch --stdout initial..master^
*   ok 95: git format-patch --stdout initial..master
*   ok 96: git format-patch --attach --stdout initial..side
*   ok 97: git format-patch --attach --stdout initial..master^
*   ok 98: git format-patch --attach --stdout initial..master
*   ok 99: git format-patch --inline --stdout initial..side
*   ok 100: git format-patch --inline --stdout initial..master^
*   ok 101: git format-patch --inline --stdout initial..master
*   ok 102: git format-patch --inline --stdout --subject-prefix=TESTCASE initial..master
*   ok 103: git config format.subjectprefix DIFFERENT_PREFIX
*   ok 104: git format-patch --inline --stdout initial..master^^
*   ok 105: git diff --abbrev initial..side
*   ok 106: git diff -r initial..side
*   ok 107: git diff --stat initial..side
*   ok 108: git diff -r --stat initial..side
*   ok 109: git diff initial..side
*   ok 110: git diff --patch-with-stat initial..side
*   ok 111: git diff --patch-with-raw initial..side
*   ok 112: git diff --patch-with-stat -r initial..side
*   ok 113: git diff --patch-with-raw -r initial..side
*   ok 114: git diff --name-status dir2 dir
* passed all 114 test(s)
*** t4014-format-patch.sh ***
*   ok 1: setup
*   ok 2: format-patch --ignore-if-in-upstream
*   ok 3: format-patch --ignore-if-in-upstream
*   ok 4: format-patch result applies
*   ok 5: format-patch --ignore-if-in-upstream result applies
*   ok 6: commit did not screw up the log message
*   ok 7: format-patch did not screw up the log message
*   ok 8: replay did not screw up the log message
* passed all 8 test(s)
*** t4015-diff-whitespace.sh ***
*   ok 1: Ray's example without options
*   ok 2: Ray's example with -w
*   ok 3: Ray's example with -b
*   ok 4: another test, without options
*   ok 5: another test, with -w
*   ok 6: another test, with -b
*   ok 7: check mixed spaces and tabs in indent
*   ok 8: check mixed tabs and spaces in indent
*   ok 9: check with no whitespace errors
*   ok 10: check with trailing whitespace
*   ok 11: check with space before tab in indent
*   ok 12: --check and --exit-code are not exclusive
*   ok 13: --check and --quiet are not exclusive
*   ok 14: check staged with no whitespace errors
*   ok 15: check staged with trailing whitespace
*   ok 16: check staged with space before tab in indent
*   ok 17: check with no whitespace errors (diff-index)
*   ok 18: check with trailing whitespace (diff-index)
*   ok 19: check with space before tab in indent (diff-index)
*   ok 20: check staged with no whitespace errors (diff-index)
*   ok 21: check staged with trailing whitespace (diff-index)
*   ok 22: check staged with space before tab in indent (diff-index)
*   ok 23: check with no whitespace errors (diff-tree)
*   ok 24: check with trailing whitespace (diff-tree)
*   ok 25: check with space before tab in indent (diff-tree)
*   ok 26: check trailing whitespace (trailing-space: off)
*   ok 27: check trailing whitespace (trailing-space: on)
*   ok 28: check space before tab in indent (space-before-tab: off)
*   ok 29: check space before tab in indent (space-before-tab: on)
*   ok 30: check spaces as indentation (indent-with-non-tab: off)
*   ok 31: check spaces as indentation (indent-with-non-tab: on)
*   ok 32: check tabs and spaces as indentation (indent-with-non-tab: on)
*   ok 33: line numbers in --check output are correct
* passed all 33 test(s)
*** t4016-diff-quote.sh ***
*   ok 1: setup
*   ok 2: git diff --summary -M HEAD
*   ok 3: git diff --stat -M HEAD
* passed all 3 test(s)
*** t4017-diff-retval.sh ***
*   ok 1: setup
*   ok 2: git diff-tree HEAD^ HEAD
*   ok 3: git diff-tree HEAD^ HEAD -- a
*   ok 4: git diff-tree HEAD^ HEAD -- b
*   ok 5: echo HEAD | git diff-tree --stdin
*   ok 6: git diff-tree HEAD HEAD
*   ok 7: git diff-files
*   ok 8: git diff-index --cached HEAD
*   ok 9: git diff-index --cached HEAD^
*   ok 10: git diff-index --cached HEAD^
*   ok 11: git diff-tree -Stext HEAD^ HEAD -- b
*   ok 12: git diff-tree -Snot-found HEAD^ HEAD -- b
*   ok 13: git diff-files
*   ok 14: git diff-index --cached HEAD
*   ok 15: --check --exit-code returns 0 for no difference
*   ok 16: --check --exit-code returns 1 for a clean difference
*   ok 17: --check --exit-code returns 3 for a dirty difference
*   ok 18: --check with --no-pager returns 2 for dirty difference
* passed all 18 test(s)
*** t4017-quiet.sh ***
*   ok 1: setup
*   ok 2: git diff-tree HEAD^ HEAD
*   ok 3: git diff-tree HEAD^ HEAD -- a
*   ok 4: git diff-tree HEAD^ HEAD -- b
*   ok 5: echo HEAD | git diff-tree --stdin
*   ok 6: git diff-tree HEAD HEAD
*   ok 7: git diff-files
*   ok 8: git diff-index --cached HEAD
*   ok 9: git diff-index --cached HEAD^
*   ok 10: git diff-index --cached HEAD^
*   ok 11: git diff-tree -Stext HEAD^ HEAD -- b
*   ok 12: git diff-tree -Snot-found HEAD^ HEAD -- b
*   ok 13: git diff-files
*   ok 14: git diff-index --cached HEAD
* passed all 14 test(s)
*** t4018-diff-funcname.sh ***
*   ok 1: default behaviour
*   ok 2: preset java pattern
*   ok 3: custom pattern
*   ok 4: last regexp must not be negated
* passed all 4 test(s)
*** t4019-diff-wserror.sh ***
*   ok 1: setup
*   ok 2: default
*   ok 3: without -trail
*   ok 4: without -trail (attribute)
*   ok 5: without -space
*   ok 6: without -space (attribute)
*   ok 7: with indent-non-tab only
*   ok 8: with indent-non-tab only (attribute)
* passed all 8 test(s)
*** t4020-diff-external.sh ***
*   ok 1: setup
*   ok 2: GIT_EXTERNAL_DIFF environment
*   ok 3: GIT_EXTERNAL_DIFF environment should apply only to diff
*   ok 4: diff attribute
*   ok 5: diff attribute should apply only to diff
*   ok 6: diff attribute
*   ok 7: diff attribute should apply only to diff
*   ok 8: no diff with -diff
*   ok 9: force diff with "diff"
* passed all 9 test(s)
*** t4021-format-patch-numbered.sh ***
*   ok 1: setup
*   ok 2: Default: no numbered
*   ok 3: Use --numbered
*   ok 4: format.numbered = true
*   ok 5: format.numbered && single patch
*   ok 6: format.numbered && --no-numbered
*   ok 7: format.numbered = auto
*   ok 8: format.numbered = auto && single patch
*   ok 9: format.numbered = auto && --no-numbered
* passed all 9 test(s)
*** t4021-format-patch-signer-mime.sh ***
*   ok 1: setup
*   ok 2: format normally
*   ok 3: format with signoff without funny signer name
*   ok 4: format with non ASCII signer name
* passed all 4 test(s)
*** t4022-diff-rewrite.sh ***
*   ok 1: setup
*   ok 2: detect rewrite
* passed all 2 test(s)
*** t4023-diff-rename-typechange.sh ***
*   ok 1: setup
*   ok 2: cross renames to be detected for regular files
*   ok 3: cross renames to be detected for typechange
*   ok 4: moves and renames
* passed all 4 test(s)
*** t4024-diff-optimize-common.sh ***
*   ok 1: setup
*   ok 2: diff -U0
* passed all 2 test(s)
*** t4025-hunk-header.sh ***
*   ok 1: setup
*   ok 2: hunk header truncation with an overly long line
* passed all 2 test(s)
*** t4026-color.sh ***
*   ok 1: reset
*   ok 2: attribute before color name
*   ok 3: color name before attribute
*   ok 4: attr fg bg
*   ok 5: fg attr bg
*   ok 6: fg bg attr
*   ok 7: 256 colors
*   ok 8: color too small
*   ok 9: color too big
*   ok 10: extra character after color number
*   ok 11: extra character after color name
*   ok 12: extra character after attribute
* passed all 12 test(s)
*** t4100-apply-stat.sh ***
*   ok 1: rename
*   ok 2: copy
*   ok 3: rewrite
*   ok 4: mode
*   ok 5: non git
*   ok 6: non git
*   ok 7: non git
* passed all 7 test(s)
*** t4101-apply-nonl.sh ***
*   ok 1: apply diff between 0 and 1
*   ok 2: apply diff between 0 and 2
*   ok 3: apply diff between 0 and 3
*   ok 4: apply diff between 1 and 0
*   ok 5: apply diff between 1 and 2
*   ok 6: apply diff between 1 and 3
*   ok 7: apply diff between 2 and 0
*   ok 8: apply diff between 2 and 1
*   ok 9: apply diff between 2 and 3
*   ok 10: apply diff between 3 and 0
*   ok 11: apply diff between 3 and 1
*   ok 12: apply diff between 3 and 2
* passed all 12 test(s)
*** t4102-apply-rename.sh ***
*   ok 1: setup
*   ok 2: apply
*   ok 3: validate
*   ok 4: apply reverse
*   ok 5: apply copy
* passed all 5 test(s)
*** t4103-apply-binary.sh ***
Created initial commit 0f68aca: Initial Version
 3 files changed, 15 insertions(+), 0 deletions(-)
 create mode 100644 file1
 create mode 100644 file2
 create mode 100644 file4
Switched to a new branch "binary"
Created commit fd5dc34: Second Version
 3 files changed, 2 insertions(+), 2 deletions(-)
 rename file2 => file3 (57%)
*   ok 1: stat binary diff -- should not fail.
*   ok 2: stat binary diff (copy) -- should not fail.
*   ok 3: check binary diff -- should fail.
*   ok 4: check binary diff (copy) -- should fail.
*   ok 5: check incomplete binary diff with replacement -- should fail.
*   ok 6: check incomplete binary diff with replacement (copy) -- should fail.
*   ok 7: check binary diff with replacement.
*   ok 8: check binary diff with replacement (copy).
*   ok 9: apply binary diff -- should fail.
*   ok 10: apply binary diff -- should fail.
*   ok 11: apply binary diff (copy) -- should fail.
*   ok 12: apply binary diff (copy) -- should fail.
*   ok 13: apply binary diff without replacement.
*   ok 14: apply binary diff without replacement (copy).
*   ok 15: apply binary diff.
*   ok 16: apply binary diff (copy).
* passed all 16 test(s)
*** t4104-apply-boundary.sh ***
*   ok 1: setup
*   ok 2: apply add-a-patch with context
*   ok 3: apply add-z-patch with context
*   ok 4: apply mod-a-patch with context
*   ok 5: apply mod-z-patch with context
*   ok 6: apply del-a-patch with context
*   ok 7: apply del-z-patch with context
*   ok 8: apply add-a-patch without context
*   ok 9: apply add-z-patch without context
*   ok 10: apply mod-a-patch without context
*   ok 11: apply mod-z-patch without context
*   ok 12: apply del-a-patch without context
*   ok 13: apply del-z-patch without context
*   ok 14: apply non-git add-a-patch without context
*   ok 15: apply non-git add-z-patch without context
*   ok 16: apply non-git mod-a-patch without context
*   ok 17: apply non-git mod-z-patch without context
*   ok 18: apply non-git del-a-patch without context
*   ok 19: apply non-git del-z-patch without context
* passed all 19 test(s)
*** t4109-apply-multifrag.sh ***
*   ok 1: S = git apply (1)
*   ok 2: S = patch (1)
*   ok 3: S = cmp (1)
*   ok 4: S = git apply (2)
*   ok 5: S = patch (2)
*   ok 6: S = cmp (2)
*   ok 7: S = git apply (3)
*   ok 8: S = patch (3)
*   ok 9: S = cmp (3)
* passed all 9 test(s)
*** t4110-apply-scan.sh ***
*   ok 1: S = git apply scan
*   ok 2: S = patch scan
*   ok 3: S = cmp
* passed all 3 test(s)
*** t4112-apply-renames.sh ***
*   ok 1: check rename/copy patch
*   ok 2: apply rename/copy patch
* passed all 2 test(s)
*** t4113-apply-ending.sh ***
*   ok 1: setup
*   ok 2: apply at the end
*   ok 3: apply at the beginning
* passed all 3 test(s)
*** t4114-apply-typechange.sh ***
*   ok 1: setup repository and commits
*   ok 2: file renamed from foo to foo/baz
*   ok 3: file renamed from foo/baz to foo
*   ok 4: directory becomes file
*   ok 5: file becomes directory
*   ok 6: file becomes symlink
*   ok 7: symlink becomes file
*   ok 8: symlink becomes directory
*   ok 9: directory becomes symlink
* passed all 9 test(s)
*** t4115-apply-symlink.sh ***
*   ok 1: setup
*   ok 2: apply symlink patch
*   ok 3: apply --index symlink patch
* passed all 3 test(s)
*** t4116-apply-reverse.sh ***
*   ok 1: setup
*   ok 2: apply in forward
*   ok 3: apply in reverse
*   ok 4: setup separate repository lacking postimage
*   ok 5: apply in forward without postimage
*   ok 6: apply in reverse without postimage
*   ok 7: reversing a whitespace introduction
* passed all 7 test(s)
*** t4117-apply-reject.sh ***
*   ok 1: setup
*   ok 2: apply without --reject should fail
*   ok 3: apply without --reject should fail
*   ok 4: apply with --reject should fail but update the file
*   ok 5: apply with --reject should fail but update the file
*   ok 6: the same test with --verbose
*   ok 7: apply cleanly with --verbose
* passed all 7 test(s)
*** t4118-apply-empty-context.sh ***
*   ok 1: setup
*   ok 2: apply --numstat
*   ok 3: apply --apply
* passed all 3 test(s)
*** t4119-apply-config.sh ***
*   ok 1: setup
*   ok 2: apply --whitespace=strip
*   ok 3: apply --whitespace=strip from config
*   ok 4: apply --whitespace=strip in subdir
*   ok 5: apply --whitespace=strip from config in subdir
*   ok 6: same in subdir but with traditional patch input
*   ok 7: same but with traditional patch input of depth 1
*   ok 8: same but with traditional patch input of depth 2
*   ok 9: same but with traditional patch input of depth 1
*   ok 10: same but with traditional patch input of depth 2
* passed all 10 test(s)
*** t4120-apply-popt.sh ***
*   ok 1: setup
*   ok 2: apply git diff with -p2
* passed all 2 test(s)
*** t4121-apply-diffs.sh ***
*   ok 1: setup
*   ok 2: check if contextually independent diffs for the same file apply
* passed all 2 test(s)
*** t4122-apply-symlink-inside.sh ***
*   ok 1: setup
*   ok 2: apply
*   ok 3: check result
* passed all 3 test(s)
*** t4123-apply-shrink.sh ***
*   ok 1: setup
*   ok 2: apply should fail gracefully
* passed all 2 test(s)
*** t4124-apply-ws-rule.sh ***
*   ok 1: setup
*   ok 2: whitespace=nowarn, default rule
*   ok 3: whitespace=warn, default rule
*   ok 4: whitespace=error-all, default rule
*   ok 5: whitespace=error-all, no rule
*   ok 6: whitespace=error-all, no rule (attribute)
*   ok 7: rule=-trailing,-space,-indent
*   ok 8: rule=-trailing,-space,-indent (attributes)
*   ok 9: rule=-trailing,-space,indent
*   ok 10: rule=-trailing,-space,indent (attributes)
*   ok 11: rule=-trailing,space,-indent
*   ok 12: rule=-trailing,space,-indent (attributes)
*   ok 13: rule=-trailing,space,indent
*   ok 14: rule=-trailing,space,indent (attributes)
*   ok 15: rule=trailing,-space,-indent
*   ok 16: rule=trailing,-space,-indent (attributes)
*   ok 17: rule=trailing,-space,indent
*   ok 18: rule=trailing,-space,indent (attributes)
*   ok 19: rule=trailing,space,-indent
*   ok 20: rule=trailing,space,-indent (attributes)
*   ok 21: rule=trailing,space,indent
*   ok 22: rule=trailing,space,indent (attributes)
* passed all 22 test(s)
*** t4200-rerere.sh ***
Switched to a new branch "first"
Switched to a new branch "second"
*   ok 1: nothing recorded without rerere
*   ok 2: conflicting merge
*   ok 3: recorded preimage
*   ok 4: rerere.enabled works, too
*   ok 5: no postimage or thisimage yet
*   ok 6: preimage has right number of lines
*   ok 7: rerere diff
*   ok 8: rerere status
*   ok 9: commit succeeds
*   ok 10: recorded postimage
*   ok 11: another conflicting merge
*   ok 12: rerere kicked in
*   ok 13: rerere prefers first change
*   ok 14: rerere clear
*   ok 15: clear removed the directory
*   ok 16: garbage collection (part1)
*   ok 17: young records still live
*   ok 18: garbage collection (part2)
*   ok 19: old records rest in peace
*   ok 20: file2 added differently in two branches
*   ok 21: resolution was recorded properly
* passed all 21 test(s)
*** t4201-shortlog.sh ***
*   ok 1: shortlog wrapping
* passed all 1 test(s)
*** t4202-log.sh ***
*   ok 1: setup
*   ok 2: diff-filter=A
*   ok 3: diff-filter=M
*   ok 4: diff-filter=D
* passed all 4 test(s)
*** t5000-tar-tree.sh ***
*   ok 1: populate workdir
*   ok 2: add files to repository
*   ok 3: git archive
*   ok 4: git tar-tree
*   ok 5: git archive vs. git tar-tree
*   ok 6: validate file modification time
*   ok 7: git get-tar-commit-id
*   ok 8: extract tar archive
*   ok 9: validate filenames
*   ok 10: validate file contents
*   ok 11: git tar-tree with prefix
*   ok 12: extract tar archive with prefix
*   ok 13: validate filenames with prefix
*   ok 14: validate file contents with prefix
*   ok 15: create an archive with a substfiles
*   ok 16: extract substfiles
*   ok 17: validate substfile contents
*   ok 18: git archive --format=zip
*   ok 19: extract ZIP archive
*   ok 20: validate filenames
*   ok 21: validate file contents
*   ok 22: git archive --format=zip with prefix
*   ok 23: extract ZIP archive with prefix
*   ok 24: validate filenames with prefix
*   ok 25: validate file contents with prefix
*   ok 26: git archive --list outside of a git repo
* passed all 26 test(s)
*** t5100-mailinfo.sh ***
*   ok 1: split sample box
*   ok 2: mailinfo 0001
*   ok 3: mailinfo 0002
*   ok 4: mailinfo 0003
*   ok 5: mailinfo 0004
*   ok 6: mailinfo 0005
*   ok 7: mailinfo 0006
*   ok 8: mailinfo 0007
*   ok 9: mailinfo 0008
*   ok 10: mailinfo 0009
* passed all 10 test(s)
*** t5300-pack-object.sh ***
*   ok 1: setup
*   ok 2: pack without delta
*   ok 3: unpack without delta
*   ok 4: check unpack without delta
*   ok 5: pack with REF_DELTA
*   ok 6: unpack with REF_DELTA
*   ok 7: check unpack with REF_DELTA
*   ok 8: pack with OFS_DELTA
*   ok 9: unpack with OFS_DELTA
*   ok 10: check unpack with OFS_DELTA
*   ok 11: compare delta flavors
*   ok 12: use packed objects
*   ok 13: use packed deltified (REF_DELTA) objects
*   ok 14: use packed deltified (OFS_DELTA) objects
*   ok 15: verify pack
*   ok 16: verify-pack catches mismatched .idx and .pack files
*   ok 17: verify-pack catches a corrupted pack signature
*   ok 18: verify-pack catches a corrupted pack version
*   ok 19: verify-pack catches a corrupted type/size of the 1st packed object data
*   ok 20: verify-pack catches a corrupted sum of the index file itself
*   ok 21: build pack index for an existing pack
*   ok 22: fake a SHA1 hash collision
*   ok 23: make sure index-pack detects the SHA1 collision
* passed all 23 test(s)
*** t5301-sliding-window.sh ***
*   ok 1: setup
*   ok 2: verify-pack -v, defaults
*   ok 3: verify-pack -v, packedGitWindowSize == 1 page
*   ok 4: verify-pack -v, packedGit{WindowSize,Limit} == 1 page
*   ok 5: repack -a -d, packedGit{WindowSize,Limit} == 1 page
*   ok 6: verify-pack -v, defaults
* passed all 6 test(s)
*** t5302-pack-index.sh ***
*   ok 1: setup
*   ok 2: pack-objects with index version 1
*   ok 3: pack-objects with index version 2
*   ok 4: both packs should be identical
*   ok 5: index v1 and index v2 should be different
*   ok 6: index-pack with index version 1
*   ok 7: index-pack with index version 2
*   ok 8: index-pack results should match pack-objects ones
*   ok 9: index v2: force some 64-bit offsets with pack-objects
*   ok 10: index v2: verify a pack with some 64-bit offsets
*   ok 11: 64-bit offsets: should be different from previous index v2 results
*   ok 12: index v2: force some 64-bit offsets with index-pack
*   ok 13: 64-bit offsets: index-pack result should match pack-objects one
*   ok 14: [index v1] 1) stream pack to repository
*   ok 15: [index v1] 2) create a stealth corruption in a delta base reference
*   ok 16: [index v1] 3) corrupted delta happily returned wrong data
*   ok 17: [index v1] 4) confirm that the pack is actually corrupted
*   ok 18: [index v1] 5) pack-objects happily reuses corrupted data
*   ok 19: [index v1] 6) newly created pack is BAD !
*   ok 20: [index v2] 1) stream pack to repository
*   ok 21: [index v2] 2) create a stealth corruption in a delta base reference
*   ok 22: [index v2] 3) corrupted delta happily returned wrong data
*   ok 23: [index v2] 4) confirm that the pack is actually corrupted
*   ok 24: [index v2] 5) pack-objects refuses to reuse corrupted data
* passed all 24 test(s)
*** t5304-prune.sh ***
*   ok 1: setup
*   ok 2: prune stale packs
* passed all 2 test(s)
*** t5400-send-pack.sh ***
*   ok 1: setup
*   ok 2: pack the source repository
*   ok 3: pack the destination repository
*   ok 4: pushing rewound head should not barf but require --force
*   ok 5: push can be used to delete a ref
*   ok 6: pushing with --force should be denied with denyNonFastforwards
*   ok 7: pushing does not include non-head refs
*   ok 8: pushing explicit refspecs respects forcing
*   ok 9: pushing wildcard refspecs respects forcing
* passed all 9 test(s)
*** t5401-update-hooks.sh ***
*   ok 1: setup
*   ok 2: push
*   ok 3: updated as expected
*   ok 4: hooks ran
*   ok 5: pre-receive hook input
*   ok 6: update hook arguments
*   ok 7: post-receive hook input
*   ok 8: post-update hook arguments
*   ok 9: all hook stdin is /dev/null
*   ok 10: all *-receive hook args are empty
*   ok 11: send-pack produced no output
*   ok 12: send-pack stderr contains hook messages
* passed all 12 test(s)
*** t5402-post-merge-hook.sh ***
*   ok 1: setup
*   ok 2: post-merge does not run for up-to-date 
*   ok 3: post-merge runs as expected 
*   ok 4: post-merge from normal merge receives the right argument 
*   ok 5: post-merge from squash merge runs as expected 
*   ok 6: post-merge from squash merge receives the right argument 
* passed all 6 test(s)
*** t5403-post-checkout-hook.sh ***
*   ok 1: setup
*   ok 2: post-checkout runs as expected 
*   ok 3: post-checkout receives the right arguments with HEAD unchanged 
*   ok 4: post-checkout runs as expected 
*   ok 5: post-checkout args are correct with git checkout -b 
*   ok 6: post-checkout receives the right args with HEAD changed 
*   ok 7: post-checkout receives the right args when not switching branches 
* passed all 7 test(s)
*** t5404-tracking-branches.sh ***
*   ok 1: setup
*   ok 2: prepare pushable branches
*   ok 3: mixed-success push returns error
*   ok 4: check tracking branches updated correctly after push
*   ok 5: check tracking branches not updated for failed refs
*   ok 6: deleted branches have their tracking branches removed
* passed all 6 test(s)
*** t5405-send-pack-rewind.sh ***
*   ok 1: setup
*   ok 2: non forced push should die not segfault
*   ok 3: forced push should succeed
* passed all 3 test(s)
*** t5406-remote-rejects.sh ***
*   ok 1: setup
*   ok 2: push reports error
*   ok 3: individual ref reports error
* passed all 3 test(s)
*** t5500-fetch-pack.sh ***
Initialized empty Git repository in .git/
*   ok 1: 1st pull
*   ok 2: fsck
*   ok 3: check downloaded results
*   ok 4: new object count after 1st pull
*   ok 5: minimal count
*   ok 6: 2nd pull
*   ok 7: fsck
*   ok 8: check downloaded results
*   ok 9: new object count after 2nd pull
*   ok 10: minimal count
*   ok 11: 3rd pull
*   ok 12: fsck
*   ok 13: check downloaded results
*   ok 14: new object count after 3rd pull
*   ok 15: minimal count
*   ok 16: clone shallow
*   ok 17: clone shallow object count
*   ok 18: clone shallow object count (part 2)
*   ok 19: fsck in shallow repo
*   ok 20: pull in shallow repo
*   ok 21: clone shallow object count
*   ok 22: deepening pull in shallow repo
*   ok 23: clone shallow object count
*   ok 24: deepening fetch in shallow repo
*   ok 25: clone shallow object count
*   ok 26: pull in shallow repo with missing merge base
* passed all 26 test(s)
*** t5502-quickfetch.sh ***
*   ok 1: setup
*   ok 2: clone without alternate
*   ok 3: further commits in the original
*   ok 4: copy commit and tree but not blob by hand
*   ok 5: quickfetch should not leave a corrupted repository
*   ok 6: quickfetch should not copy from alternate
* passed all 6 test(s)
*** t5505-remote.sh ***
*   ok 1: setup
*   ok 2: remote information for the origin
*   ok 3: add another remote
*   ok 4: remove remote
*   ok 5: remove remote
* passed all 5 test(s)
*** t5510-fetch.sh ***
*   ok 1: setup
*   ok 2: clone and setup child repos
*   ok 3: fetch test
*   ok 4: fetch test for-merge
*   ok 5: fetch tags when there is no tags
*   ok 6: fetch following tags
*   ok 7: fetch must not resolve short tag name
*   ok 8: fetch must not resolve short remote name
*   ok 9: create bundle 1
*   ok 10: header of bundle looks right
*   ok 11: create bundle 2
*   ok 12: unbundle 1
*   ok 13: bundle 1 has only 3 files 
*   ok 14: unbundle 2
*   ok 15: bundle does not prerequisite objects
*   ok 16: bundle should be able to create a full history
*   ok 17: fetch with a non-applying branch.<name>.merge
*   ok 18: quoting of a strangely named repo
*   ok 19: bundle should record HEAD correctly
*   ok 20: explicit fetch should not update tracking
*   ok 21: explicit pull should not update tracking
*   ok 22: configured fetch updates tracking
* passed all 22 test(s)
*** t5512-ls-remote.sh ***
*   ok 1: setup
*   ok 2: ls-remote --tags .git
*   ok 3: ls-remote .git
*   ok 4: ls-remote --tags self
*   ok 5: ls-remote self
* passed all 5 test(s)
*** t5515-fetch-merge-logic.sh ***
*   ok 1: setup
*   ok 2: br-config-explicit
*   ok 3: br-config-explicit config-explicit
*   ok 4: br-config-explicit-merge
*   ok 5: br-config-explicit-merge config-explicit
*   ok 6: br-config-explicit-octopus
*   ok 7: br-config-explicit-octopus config-explicit
*   ok 8: br-config-glob
*   ok 9: br-config-glob config-glob
*   ok 10: br-config-glob-merge
*   ok 11: br-config-glob-merge config-glob
*   ok 12: br-config-glob-octopus
*   ok 13: br-config-glob-octopus config-glob
*   ok 14: br-remote-explicit
*   ok 15: br-remote-explicit remote-explicit
*   ok 16: br-remote-explicit-merge
*   ok 17: br-remote-explicit-merge remote-explicit
*   ok 18: br-remote-explicit-octopus
*   ok 19: br-remote-explicit-octopus remote-explicit
*   ok 20: br-remote-glob
*   ok 21: br-remote-glob remote-glob
*   ok 22: br-remote-glob-merge
*   ok 23: br-remote-glob-merge remote-glob
*   ok 24: br-remote-glob-octopus
*   ok 25: br-remote-glob-octopus remote-glob
*   ok 26: br-branches-default
*   ok 27: br-branches-default branches-default
*   ok 28: br-branches-default-merge
*   ok 29: br-branches-default-merge branches-default
*   ok 30: br-branches-default-octopus
*   ok 31: br-branches-default-octopus branches-default
*   ok 32: br-branches-one
*   ok 33: br-branches-one branches-one
*   ok 34: br-branches-one-merge
*   ok 35: br-branches-one-merge branches-one
*   ok 36: br-branches-one-octopus
*   ok 37: br-branches-one-octopus branches-one
*   ok 38: master
*   ok 39: master config-explicit
*   ok 40: master config-glob
*   ok 41: master remote-explicit
*   ok 42: master remote-glob
*   ok 43: master branches-default
*   ok 44: master branches-one
*   ok 45: br-unconfig
*   ok 46: br-unconfig config-explicit
*   ok 47: br-unconfig config-glob
*   ok 48: br-unconfig remote-explicit
*   ok 49: br-unconfig remote-glob
*   ok 50: br-unconfig branches-default
*   ok 51: br-unconfig branches-one
*   ok 52: master ../.git
*   ok 53: master ../.git one
*   ok 54: master ../.git one two
*   ok 55: master --tags ../.git
*   ok 56: master ../.git tag tag-one tag tag-three
*   ok 57: master ../.git tag tag-one-tree tag tag-three-file
*   ok 58: master ../.git one tag tag-one tag tag-three-file
*   ok 59: br-unconfig ../.git
*   ok 60: br-unconfig ../.git one
*   ok 61: br-unconfig ../.git one two
*   ok 62: br-unconfig --tags ../.git
*   ok 63: br-unconfig ../.git tag tag-one tag tag-three
*   ok 64: br-unconfig ../.git tag tag-one-tree tag tag-three-file
*   ok 65: br-unconfig ../.git one tag tag-one tag tag-three-file
* passed all 65 test(s)
*** t5516-fetch-push.sh ***
*   ok 1: setup
*   ok 2: fetch without wildcard
*   ok 3: fetch with wildcard
*   ok 4: push without wildcard
*   ok 5: push with wildcard
*   ok 6: push with matching heads
*   ok 7: push with no ambiguity (1)
*   ok 8: push with no ambiguity (2)
*   ok 9: push with colon-less refspec, no ambiguity
*   ok 10: push with weak ambiguity (1)
*   ok 11: push with weak ambiguity (2)
*   ok 12: push with ambiguity (1)
*   ok 13: push with ambiguity (2)
*   ok 14: push with colon-less refspec (1)
*   ok 15: push with colon-less refspec (2)
*   ok 16: push with colon-less refspec (3)
*   ok 17: push with colon-less refspec (4)
*   ok 18: push with HEAD
*   ok 19: push with HEAD nonexisting at remote
*   ok 20: push with dry-run
*   ok 21: push updates local refs
*   ok 22: push does not update local refs on failure
*   ok 23: allow deleting an invalid remote ref
* passed all 23 test(s)
*** t5517-push-mirror.sh ***
*   ok 1: push mirror creates new branches
*   ok 2: push mirror updates existing branches
*   ok 3: push mirror force updates existing branches
*   ok 4: push mirror removes branches
*   ok 5: push mirror adds, updates and removes branches together
*   ok 6: push mirror creates new tags
*   ok 7: push mirror updates existing tags
*   ok 8: push mirror force updates existing tags
*   ok 9: push mirror removes tags
*   ok 10: push mirror adds, updates and removes tags together
* passed all 10 test(s)
*** t5520-pull.sh ***
*   ok 1: setup
*   ok 2: pulling into void
*   ok 3: checking the results
*   ok 4: test . as a remote
*   ok 5: the default remote . should not break explicit pull
*   ok 6: --rebase
*   ok 7: branch.to-rebase.rebase
*   ok 8: --rebase with rebased upstream
* passed all 8 test(s)
*** t5530-upload-pack-error.sh ***
*   ok 1: setup and corrupt repository
*   ok 2: fsck fails
*   ok 3: upload-pack fails due to error in pack-objects
*   ok 4: corrupt repo differently
*   ok 5: fsck fails
*   ok 6: upload-pack fails due to error in rev-list
*   ok 7: create empty repository
*   ok 8: fetch fails
* passed all 8 test(s)
*** t5600-clone-fail-cleanup.sh ***
*   ok 1: clone of non-existent source should fail
*   ok 2: failed clone should not leave a directory
*   ok 3: clone of non-existent (relative to $PWD) source should fail
*   ok 4: clone should work now that source exists
*   ok 5: successful clone must leave the directory
* passed all 5 test(s)
*** t5700-clone-reference.sh ***
*   ok 1: preparing first repository
*   ok 2: preparing second repository
*   ok 3: cloning with reference (-l -s)
*   ok 4: existence of info/alternates
*   ok 5: pulling from reference
*   ok 6: that reference gets used
*   ok 7: cloning with reference (no -l -s)
*   ok 8: existence of info/alternates
*   ok 9: pulling from reference
*   ok 10: that reference gets used
*   ok 11: updating origin
*   ok 12: pulling changes from origin
*   ok 13: that alternate to origin gets used
*   ok 14: pulling changes from origin
*   ok 15: check objects expected to exist locally
* passed all 15 test(s)
*** t5701-clone-local.sh ***
*   ok 1: preparing origin repository
*   ok 2: local clone without .git suffix
*   ok 3: local clone with .git suffix
*   ok 4: local clone from x
*   ok 5: local clone from x.git that does not exist
*   ok 6: With -no-hardlinks, local will make a copy
*   ok 7: Even without -l, local will make a hardlink
*   ok 8: local clone of repo with nonexistent ref in HEAD
* passed all 8 test(s)
*** t5702-clone-options.sh ***
*   ok 1: setup
*   ok 2: clone -o
* passed all 2 test(s)
*** t5710-info-alternate.sh ***
*   ok 1: preparing first repository
*   ok 2: preparing second repository
*   ok 3: preparing third repository
*   ok 4: creating too deep nesting
*   ok 5: invalidity of deepest repository
*   ok 6: validity of third repository
*   ok 7: validity of fourth repository
*   ok 8: breaking of loops
*   ok 9: that info/alternates is necessary
*   ok 10: that relative alternate is possible for current dir
*   ok 11: that relative alternate is only possible for current dir
* passed all 11 test(s)
*** t6001-rev-list-graft.sh ***
*   ok 1: setup
*   ok 2: without grafts
*   ok 3: with grafts
*   ok 4: without grafts, with pathlimit
*   ok 5: with grafts, with pathlimit
*   ok 6: without grafts
*   ok 7: with grafts
*   ok 8: without grafts, with pathlimit
*   ok 9: with grafts, with pathlimit
*   ok 10: without grafts
*   ok 11: with grafts
*   ok 12: without grafts, with pathlimit
*   ok 13: with grafts, with pathlimit
* passed all 13 test(s)
*** t6002-rev-list-bisect.sh ***
*   ok 1: bisection diff --bisect l0 ^root <= 0
*   ok 2: bisection diff --bisect l1 ^root <= 0
*   ok 3: bisection diff --bisect l2 ^root <= 0
*   ok 4: bisection diff --bisect a0 ^root <= 0
*   ok 5: bisection diff --bisect a1 ^root <= 0
*   ok 6: bisection diff --bisect a2 ^root <= 0
*   ok 7: bisection diff --bisect a3 ^root <= 0
*   ok 8: bisection diff --bisect b1 ^root <= 0
*   ok 9: bisection diff --bisect b2 ^root <= 0
*   ok 10: bisection diff --bisect b3 ^root <= 0
*   ok 11: bisection diff --bisect c1 ^root <= 0
*   ok 12: bisection diff --bisect c2 ^root <= 0
*   ok 13: bisection diff --bisect c3 ^root <= 0
*   ok 14: bisection diff --bisect E ^F <= 0
*   ok 15: bisection diff --bisect e1 ^F <= 0
*   ok 16: bisection diff --bisect e2 ^F <= 0
*   ok 17: bisection diff --bisect e3 ^F <= 0
*   ok 18: bisection diff --bisect e4 ^F <= 0
*   ok 19: bisection diff --bisect e5 ^F <= 0
*   ok 20: bisection diff --bisect e6 ^F <= 0
*   ok 21: bisection diff --bisect e7 ^F <= 0
*   ok 22: bisection diff --bisect f1 ^F <= 0
*   ok 23: bisection diff --bisect f2 ^F <= 0
*   ok 24: bisection diff --bisect f3 ^F <= 0
*   ok 25: bisection diff --bisect f4 ^F <= 0
*   ok 26: bisection diff --bisect E ^F <= 0
*   ok 27: bisection diff --bisect V ^U <= 1
*   ok 28: bisection diff --bisect V ^U ^u1 ^u2 ^u3 <= 0
*   ok 29: bisection diff --bisect u1 ^U <= 0
*   ok 30: bisection diff --bisect u2 ^U <= 0
*   ok 31: bisection diff --bisect u3 ^U <= 0
*   ok 32: bisection diff --bisect u4 ^U <= 0
*   ok 33: bisection diff --bisect u5 ^U <= 0
*   ok 34: --bisect l5 ^root
*   ok 35: --bisect l5 ^root ^c3
*   ok 36: --bisect l5 ^root ^c3 ^b4
*   ok 37: --bisect l3 ^root ^c3 ^b4
*   ok 38: --bisect l5 ^b3 ^a3 ^b4 ^a4
*   ok 39: --bisect l4 ^a2 ^a3 ^b ^a4
*   ok 40: --bisect l3 ^a2 ^a3 ^b ^a4
*   ok 41: --bisect a4 ^a2 ^a3 ^b4
*   ok 42: --bisect a4 ^a2 ^a3 ^b4 ^c2
*   ok 43: --bisect a4 ^a2 ^a3 ^b4 ^c2 ^c3
*   ok 44: --bisect a4 ^a2 ^a3 ^b4
*   ok 45: --bisect c3 ^a2 ^a3 ^b4 ^c2
* passed all 45 test(s)
*** t6003-rev-list-topo-order.sh ***
*   ok 1: rev-list has correct number of entries
*   ok 2: simple topo order
*   ok 3: two diamonds topo order (g6)
*   ok 4: multiple heads
*   ok 5: multiple heads, prune at a1
*   ok 6: multiple heads, prune at l1
*   ok 7: cross-epoch, head at l5, prune at l1
*   ok 8: duplicated head arguments
*   ok 9: prune near topo
*   ok 10: head has no parent
*   ok 11: two nodes - one head, one base
*   ok 12: three nodes one head, one internal, one base
*   ok 13: linear prune l2 ^root
*   ok 14: linear prune l2 ^l0
*   ok 15: linear prune l2 ^l1
*   ok 16: linear prune l5 ^a4
*   ok 17: linear prune l5 ^l3
*   ok 18: linear prune l5 ^l4
*   ok 19: max-count 10 - topo order
*   ok 20: max-count 10 - non topo order
*   ok 21: --max-age=c3, no --topo-order
*   ok 22: one specified head reachable from another a4, c3, --topo-order
*   ok 23: one specified head reachable from another c3, a4, --topo-order
*   ok 24: one specified head reachable from another a4, c3, no --topo-order
*   ok 25: one specified head reachable from another c3, a4, no --topo-order
*   ok 26: graph with c3 and a4 parents of head
*   ok 27: graph with a4 and c3 parents of head
*   ok 28: head ^head --topo-order
*   ok 29: head ^head no --topo-order
*   ok 30: simple topo order (l5r1)
*   ok 31: simple topo order (r1l5)
*   ok 32: don't print things unreachable from one branch
*   ok 33: --topo-order a4 l3
* passed all 33 test(s)
*** t6004-rev-list-path-optim.sh ***
*   ok 1: setup
*   ok 2: path-optimization
*   ok 3: further setup
*   ok 4: path optimization 2
* passed all 4 test(s)
*** t6005-rev-list-count.sh ***
*   ok 1: setup
*   ok 2: no options
*   ok 3: --max-count
*   ok 4: --max-count all forms
*   ok 5: --skip
*   ok 6: --skip --max-count
* passed all 6 test(s)
*** t6006-rev-list-format.sh ***
*   ok 1: setup
*   ok 2: format hash
*   ok 3: format tree
*   ok 4: format parents
*   ok 5: format author
*   ok 6: format committer
*   ok 7: format encoding
*   ok 8: format subject
*   ok 9: format body
*   ok 10: format colors
*   ok 11: setup complex body
*   ok 12: format complex-encoding
*   ok 13: format complex-subject
*   ok 14: format complex-body
*   ok 15: empty email
* passed all 15 test(s)
*** t6007-rev-list-cherry-pick-file.sh ***
*   ok 1: setup
*   ok 2: --cherry-pick foo comes up empty
*   ok 3: --cherry-pick bar does not come up empty
*   ok 4: --cherry-pick with independent, but identical branches
* passed all 4 test(s)
*** t6008-rev-list-submodule.sh ***
*   ok 1: setup
*   ok 2: Ilari's test
* passed all 2 test(s)
*** t6010-merge-base.sh ***
*   ok 1: compute merge-base (single)
*   ok 2: compute merge-base (all)
*   ok 3: compute merge-base with show-branch
*   ok 4: compute merge-base (single)
*   ok 5: compute merge-base (all)
* passed all 5 test(s)
*** t6020-merge-df.sh ***
*   ok 1: prepare repository
*   ok 2: Merge with d/f conflicts
* passed all 2 test(s)
*** t6021-merge-criss-cross.sh ***
*   ok 1: prepare repository
*   ok 2: Criss-cross merge
*   ok 3: Criss-cross merge result
* passed all 3 test(s)
*** t6022-merge-rename.sh ***
*   ok 1: setup
*   ok 2: pull renaming branch into unrenaming one
*   ok 3: pull renaming branch into another renaming one
*   ok 4: pull unrenaming branch into renaming one
*   ok 5: pull conflicting renames
*   ok 6: interference with untracked working tree file
*   ok 7: interference with untracked working tree file
*   ok 8: interference with untracked working tree file
*   ok 9: updated working tree file should prevent the merge
*   ok 10: updated working tree file should prevent the merge
*   ok 11: interference with untracked working tree file
*   ok 12: merge of identical changes in a renamed file
* passed all 12 test(s)
*** t6023-merge-file.sh ***
*   ok 1: merge without conflict
*   ok 2: merge without conflict (missing LF at EOF)
*   ok 3: merge result added missing LF
*   ok 4: merge with conflicts
*   ok 5: expected conflict markers
*   ok 6: merge with conflicts, using -L
*   ok 7: expected conflict markers, with -L
*   ok 8: conflict in removed tail
*   ok 9: expected conflict markers
*   ok 10: binary files cannot be merged
* passed all 10 test(s)
*** t6023-merge-rename-nocruft.sh ***
*   ok 1: setup
*   ok 2: merge white into red (A->B,M->N)
*   ok 3: merge blue into white (A->B, mod A, A untracked)
* passed all 3 test(s)
*** t6024-recursive-merge.sh ***
*   ok 1: setup tests
*   ok 2: combined merge conflicts
*   ok 3: result contains a conflict
*   ok 4: virtual trees were processed
HEAD is now at 71b2f3d... F
*   ok 5: refuse to merge binary files
* passed all 5 test(s)
*** t6025-merge-symlinks.sh ***
*   ok 1: setup
*   ok 2: merge master into b-symlink, which has a different symbolic link
*   ok 3: the merge result must be a file
*   ok 4: merge master into b-file, which has a file instead of a symbolic link
*   ok 5: the merge result must be a file
*   ok 6: merge b-file, which has a file instead of a symbolic link, into master
*   ok 7: the merge result must be a file
* passed all 7 test(s)
*** t6026-merge-attr.sh ***
*   ok 1: setup
*   ok 2: merge
*   ok 3: check merge result in index
*   ok 4: check merge result in working tree
*   ok 5: custom merge backend
*   ok 6: custom merge backend
* passed all 6 test(s)
*** t6027-merge-binary.sh ***
*   ok 1: setup
*   ok 2: resolve
*   ok 3: recursive
* passed all 3 test(s)
*** t6028-merge-up-to-date.sh ***
*   ok 1: setup
*   ok 2: merge -s recursive up-to-date
*   ok 3: merge -s recursive fast-forward
*   ok 4: merge -s ours up-to-date
*   ok 5: merge -s ours fast-forward
*   ok 6: merge -s subtree up-to-date
* passed all 6 test(s)
*** t6030-bisect-porcelain.sh ***
*   ok 1: set up basic repo with 1 file (hello) and 4 commits
*   ok 2: bisect starts with only one bad
*   ok 3: bisect does not start with only one good
*   ok 4: bisect start with one bad and good
*   ok 5: bisect reset: back in the master branch
*   ok 6: bisect reset: back in another branch
*   ok 7: bisect reset when not bisecting
*   ok 8: bisect reset removes packed refs
*   ok 9: bisect skip: successfull result
*   ok 10: bisect skip: cannot tell between 3 commits
*   ok 11: bisect skip: cannot tell between 2 commits
*   ok 12: "git bisect run" simple case
*   ok 13: "git bisect run" with more complex "git bisect start"
*   ok 14: bisect skip: add line and then a new test
*   ok 15: bisect skip and bisect replay
*   ok 16: bisect run & skip: cannot tell between 2
*   ok 17: bisect run & skip: find first bad
*   ok 18: bisect starting with a detached HEAD
* passed all 18 test(s)
*** t6101-rev-parse-parents.sh ***
*   ok 1: start is valid
*   ok 2: start^0
*   ok 3: start^1 not valid
*   ok 4: second^1 = second^
*   ok 5: final^1^1^1
*   ok 6: final^1^1^1 = final^^^
*   ok 7: final^1^2
*   ok 8: final^1^2 != final^1^1
*   ok 9: final^1^3 not valid
*   ok 10: --verify start2^1
*   ok 11: --verify start2^0
*   ok 12: repack for next test
*   ok 13: short SHA-1 works
* passed all 13 test(s)
*** t6120-describe.sh ***
*   ok 1: setup
*   ok 2: describe HEAD
*   ok 3: describe HEAD^
*   ok 4: describe HEAD^^
*   ok 5: describe HEAD^^2
*   ok 6: describe HEAD^^2^
*   ok 7: describe --tags HEAD
*   ok 8: describe --tags HEAD^
*   ok 9: describe --tags HEAD^^
*   ok 10: describe --tags HEAD^^2
*   ok 11: describe --tags HEAD^^2^
* passed all 11 test(s)
*** t6200-fmt-merge-msg.sh ***
*   ok 1: setup
*   ok 2: merge-msg test #1
*   ok 3: merge-msg test #2
*   ok 4: merge-msg test #3
*   ok 5: merge-msg test #4
*   ok 6: merge-msg test #5
* passed all 6 test(s)
*** t6300-for-each-ref.sh ***
*   ok 1: Create sample commit with known timestamp
*   ok 2: Check atom names are valid
*   ok 3: Check invalid atoms names are errors
*   ok 4: Check format specifiers are ignored in naming date atoms
*   ok 5: Check valid format specifiers for date fields
*   ok 6: Check invalid format specifiers are errors
*   ok 7: Check unformatted date fields output
*   ok 8: Check format "default" formatted date fields output
*   ok 9: Check format "relative" date fields output
*   ok 10: Check format "short" date fields output
*   ok 11: Check format "local" date fields output
*   ok 12: Check format "iso8601" date fields output
*   ok 13: Check format "rfc2822" date fields output
*   ok 14: Verify ascending sort
*   ok 15: Verify descending sort
*   ok 16: Quoting style: shell
*   ok 17: Quoting style: perl
*   ok 18: Quoting style: python
*   ok 19: Quoting style: tcl
*   ok 20: more than one quoting style: --perl --shell
*   ok 21: more than one quoting style: -s --python
*   ok 22: more than one quoting style: --python --tcl
*   ok 23: more than one quoting style: --tcl --perl
* passed all 23 test(s)
*** t7001-mv.sh ***
*   ok 1: prepare reference tree
*   ok 2: moving the file out of subdirectory
*   ok 3: commiting the change
*   ok 4: checking the commit
*   ok 5: moving the file back into subdirectory
*   ok 6: commiting the change
*   ok 7: checking the commit
*   ok 8: adding another file
*   ok 9: moving whole subdirectory
*   ok 10: commiting the change
*   ok 11: checking the commit
*   ok 12: succeed when source is a prefix of destination
*   ok 13: moving whole subdirectory into subdirectory
*   ok 14: commiting the change
*   ok 15: checking the commit
*   ok 16: do not move directory over existing directory
*   ok 17: move into "."
*   ok 18: Michael Cassar's test case
*   ok 19: Sergey Vlasov's test case
* passed all 19 test(s)
*** t7002-grep.sh ***
*   ok 1: setup
*   ok 2: grep -w HEAD
*   ok 3: grep -w HEAD (x)
*   ok 4: grep -w HEAD (y-1)
*   ok 5: grep -w HEAD (y-2)
*   ok 6: grep -w HEAD (z)
*   ok 7: grep HEAD (t-1)
*   ok 8: grep HEAD (t-2)
*   ok 9: grep HEAD (t-3)
*   ok 10: grep -c HEAD (no /dev/null)
*   ok 11: grep -w in working tree
*   ok 12: grep -w in working tree (x)
*   ok 13: grep -w in working tree (y-1)
*   ok 14: grep -w in working tree (y-2)
*   ok 15: grep -w in working tree (z)
*   ok 16: grep in working tree (t-1)
*   ok 17: grep in working tree (t-2)
*   ok 18: grep in working tree (t-3)
*   ok 19: grep -c in working tree (no /dev/null)
* passed all 19 test(s)
*** t7003-filter-branch.sh ***
*   ok 1: setup
*   ok 2: rewrite identically
*   ok 3: result is really identical
*   ok 4: rewrite, renaming a specific file
*   ok 5: test that the file was renamed
*   ok 6: rewrite one branch, keeping a side branch
*   ok 7: common ancestor is still common (unchanged)
*   ok 8: filter subdirectory only
*   ok 9: subdirectory filter result looks okay
*   ok 10: setup and filter history that requires --full-history
*   ok 11: subdirectory filter result looks okay
*   ok 12: use index-filter to move into a subdirectory
*   ok 13: stops when msg filter fails
*   ok 14: author information is preserved
*   ok 15: remove a certain author's commits
*   ok 16: barf on invalid name
*   ok 17: "map" works in commit filter
*   ok 18: Name needing quotes
* passed all 18 test(s)
*** t7004-tag.sh ***
*   ok 1: listing all tags in an empty tree should succeed
*   ok 2: listing all tags in an empty tree should output nothing
*   ok 3: looking for a tag in an empty tree should fail
*   ok 4: creating a tag in an empty tree should fail
*   ok 5: creating a tag for HEAD in an empty tree should fail
*   ok 6: creating a tag for an unknown revision should fail
*   ok 7: creating a tag using default HEAD should succeed
*   ok 8: listing all tags if one exists should succeed
*   ok 9: listing all tags if one exists should output that tag
*   ok 10: listing a tag using a matching pattern should succeed
*   ok 11: listing a tag using a matching pattern should output that tag
*   ok 12: listing tags using a non-matching pattern should suceed
*   ok 13: listing tags using a non-matching pattern should output nothing
*   ok 14: trying to create a tag with the name of one existing should fail
*   ok 15: trying to create a tag with a non-valid name should fail
*   ok 16: creating a tag using HEAD directly should succeed
*   ok 17: trying to delete an unknown tag should fail
*   ok 18: trying to delete tags without params should succeed and do nothing
*   ok 19: deleting two existing tags in one command should succeed
*   ok 20: creating a tag with the name of another deleted one should succeed
*   ok 21: trying to delete two tags, existing and not, should fail in the 2nd
*   ok 22: trying to delete an already deleted tag should fail
*   ok 23: listing all tags should print them ordered
*   ok 24: listing tags with substring as pattern must print those matching
*   ok 25: listing tags with a suffix as pattern must print those matching
*   ok 26: listing tags with a prefix as pattern must print those matching
*   ok 27: listing tags using a name as pattern must print that one matching
*   ok 28: listing tags using a name as pattern must print that one matching
*   ok 29: listing tags with ? in the pattern should print those matching
*   ok 30: listing tags using v.* should print nothing because none have v.
*   ok 31: listing tags using v* should print only those having v
*   ok 32: a non-annotated tag created without parameters should point to HEAD
*   ok 33: trying to verify an unknown tag should fail
*   ok 34: trying to verify a non-annotated and non-signed tag should fail
*   ok 35: trying to verify many non-annotated or unknown tags, should fail
*   ok 36: creating an annotated tag with -m message should succeed
*   ok 37: creating an annotated tag with -F messagefile should succeed
*   ok 38: creating an annotated tag with -F - should succeed
*   ok 39: trying to create a tag with a non-existing -F file should fail
*   ok 40: trying to create tags giving both -m or -F options should fail
*   ok 41: creating a tag with an empty -m message should succeed
*   ok 42: creating a tag with an empty -F messagefile should succeed
*   ok 43: extra blanks in the message for an annotated tag should be removed
*   ok 44: creating a tag with blank -m message with spaces should succeed
*   ok 45: creating a tag with blank -F messagefile with spaces should succeed
*   ok 46: creating a tag with -F file of spaces and no newline should succeed
*   ok 47: creating a tag using a -F messagefile with #comments should succeed
*   ok 48: creating a tag with a #comment in the -m message should succeed
*   ok 49: creating a tag with #comments in the -F messagefile should succeed
*   ok 50: creating a tag with a file of #comment and no newline should succeed
*   ok 51: listing the one-line message of a non-signed tag should succeed
*   ok 52: listing the zero-lines message of a non-signed tag should succeed
*   ok 53: listing many message lines of a non-signed tag should succeed
*   ok 54: trying to verify an annotated non-signed tag should fail
*   ok 55: trying to verify a file-annotated non-signed tag should fail
*   ok 56: trying to verify two annotated non-signed tags should fail
t7004-tag.sh: 603: gpg: not found
Skipping signed tags tests, because gpg was not found
* passed all 56 test(s)
*** t7005-editor.sh ***
*   ok 1: setup
*   ok 2: dumb should error out when falling back on editor
*   ok 3: Using editor
*   ok 4: Using EDITOR
*   ok 5: Using VISUAL
*   ok 6: Using core_editor
*   ok 7: Using GIT_EDITOR
*   ok 8: Using editor (override)
*   ok 9: Using EDITOR (override)
*   ok 10: Using VISUAL (override)
*   ok 11: Using core_editor (override)
*   ok 12: Using GIT_EDITOR (override)
* passed all 12 test(s)
*** t7101-reset.sh ***
*   ok 1: creating initial files
*   ok 2: creating second files
*   ok 3: resetting tree HEAD^
*   ok 4: checking initial files exist after rewind
*   ok 5: checking lack of path1/path2/COPYING
*   ok 6: checking lack of path1/COPYING
*   ok 7: checking lack of COPYING
*   ok 8: checking checking lack of path1/COPYING-TOO
*   ok 9: checking lack of path1/path2
*   ok 10: checking lack of path1
* passed all 10 test(s)
*** t7102-reset.sh ***
*   ok 1: creating initial files and commits
*   ok 2: giving a non existing revision should fail
*   ok 3: reset --soft with unmerged index should fail
*   ok 4: giving paths with options different than --mixed should fail
*   ok 5: giving unrecognized options should fail
*   ok 6: trying to do reset --soft with pending merge should fail
*   ok 7: trying to do reset --soft with pending checkout merge should fail
*   ok 8: resetting to HEAD with no changes should succeed and do nothing
*   ok 9: --soft reset only should show changes in diff --cached
*   ok 10: changing files and redo the last commit should succeed
*   ok 11: --hard reset should change the files and undo commits permanently
*   ok 12: redoing changes adding them without commit them should succeed
*   ok 13: --mixed reset to HEAD should unadd the files
*   ok 14: redoing the last two commits should succeed
*   ok 15: --hard reset to HEAD should clear a failed merge
*   ok 16: --hard reset to ORIG_HEAD should clear a fast-forward merge
*   ok 17: test --mixed <paths>
*   ok 18: test resetting the index at give paths
*   ok 19: resetting an unmodified path is a no-op
*   ok 20: --mixed refreshes the index
* passed all 20 test(s)
*** t7103-reset-bare.sh ***
*   ok 1: setup non-bare
*   ok 2: setup bare
*   ok 3: hard reset is not allowed
*   ok 4: soft reset is allowed
* passed all 4 test(s)
*** t7201-co.sh ***
*   ok 1: setup
*   ok 2: checkout from non-existing branch
*   ok 3: checkout with dirty tree without -m
*   ok 4: checkout with unrelated dirty tree without -m
*   ok 5: checkout -m with dirty tree
*   ok 6: checkout -m with dirty tree, renamed
*   ok 7: checkout -m with merge conflict
*   ok 8: checkout to detach HEAD
*   ok 9: checkout to detach HEAD with branchname^
*   ok 10: checkout to detach HEAD with HEAD^0
*   ok 11: checkout with ambiguous tag/branch names
*   ok 12: checkout with ambiguous tag/branch names
* passed all 12 test(s)
*** t7300-clean.sh ***
*   ok 1: setup
*   ok 2: git-clean
*   ok 3: git-clean src/
*   ok 4: git-clean src/ src/
*   ok 5: git-clean with prefix
*   ok 6: git-clean -d with prefix and path
*   ok 7: git-clean symbolic link
*   ok 8: git-clean with wildcard
*   ok 9: git-clean -n
*   ok 10: git-clean -d
*   ok 11: git-clean -d src/ examples/
*   ok 12: git-clean -x
*   ok 13: git-clean -d -x
*   ok 14: git-clean -X
*   ok 15: git-clean -d -X
*   ok 16: clean.requireForce defaults to true
*   ok 17: clean.requireForce
*   ok 18: clean.requireForce and -n
*   ok 19: clean.requireForce and -f
*   ok 20: core.excludesfile
* passed all 20 test(s)
*** t7400-submodule-basic.sh ***
*   ok 1: Prepare submodule testing
*   ok 2: status should fail for unmapped paths
*   ok 3: status should only print one line
*   ok 4: status should initially be "missing"
*   ok 5: init should register submodule url in .git/config
*   ok 6: update should fail when path is used by a file
*   ok 7: update should fail when path is used by a nonempty directory
*   ok 8: update should work when path is an empty dir
*   ok 9: status should be "up-to-date" after update
*   ok 10: status should be "modified" after submodule commit
*   ok 11: the --cached sha1 should be rev1
*   ok 12: git diff should report the SHA1 of the new submodule commit
*   ok 13: update should checkout rev1
*   ok 14: status should be "up-to-date" after update
*   ok 15: checkout superproject with subproject already present
*   ok 16: apply submodule diff
* passed all 16 test(s)
*** t7500-commit.sh ***
*   ok 1: a basic commit in an empty tree should succeed
*   ok 2: nonexistent template file should return error
*   ok 3: nonexistent template file in config should return error
*   ok 4: unedited template should not commit
*   ok 5: unedited template with comments should not commit
*   ok 6: a Signed-off-by line by itself should not commit
*   ok 7: adding comments to a template should not commit
*   ok 8: adding real content to a template should commit
*   ok 9: -t option should be short for --template
*   ok 10: config-specified template should commit
*   ok 11: explicit commit message should override template
*   ok 12: commit message from file should override template
*   ok 13: using alternate GIT_INDEX_FILE (1)
*   ok 14: using alternate GIT_INDEX_FILE (2)
*   ok 15: --signoff
* passed all 15 test(s)
*** t7501-commit.sh ***
*   ok 1: initial status
*   ok 2: fail initial amend
*   ok 3: initial commit
*   ok 4: invalid options 1
*   ok 5: invalid options 2
*   ok 6: using paths with -a
*   ok 7: using paths with --interactive
*   ok 8: using invalid commit with -C
*   ok 9: testing nothing to commit
*   ok 10: next commit
*   ok 11: commit message from non-existing file
*   ok 12: empty commit message
*   ok 13: commit message from file
*   ok 14: amend commit
*   ok 15: passing -m and -F
*   ok 16: using message from other commit
*   ok 17: editing message from other commit
*   ok 18: message from stdin
*   ok 19: overriding author from command line
*   ok 20: interactive add
*   ok 21: showing committed revisions
*   ok 22: validate git-rev-list output.
*   ok 23: partial commit that involves removal (1)
*   ok 24: partial commit that involves removal (2)
*   ok 25: partial commit that involves removal (3)
*   ok 26: amend commit to fix author
*   ok 27: sign off (1)
*   ok 28: sign off (2)
*   ok 29: multiple -m
*   ok 30: amend commit to fix author
*   ok 31: git commit <file> with dirty index
*   ok 32: same tree (single parent)
*   ok 33: same tree (single parent) --allow-empty
*   ok 34: same tree (merge and amend merge)
*   ok 35: amend using the message from another commit
*   ok 36: amend using the message from a commit named with tag
* passed all 36 test(s)
*** t7502-commit.sh ***
*   ok 1: the basics
*   ok 2: partial
*   ok 3: partial modification in a subdirecotry
*   ok 4: partial removal
*   ok 5: sign off
*   ok 6: multiple -m
*   ok 7: verbose
*   ok 8: cleanup commit messages (verbatim,-t)
*   ok 9: cleanup commit messages (verbatim,-F)
*   ok 10: cleanup commit messages (verbatim,-m)
*   ok 11: cleanup commit messages (whitespace,-F)
*   ok 12: cleanup commit messages (strip,-F)
*   ok 13: cleanup commit messages (strip,-F,-e)
* passed all 13 test(s)
*** t7502-status.sh ***
*   ok 1: setup
*   ok 2: status (1)
*   ok 3: status (2)
*   ok 4: status with relative paths
*   ok 5: status without relative paths
*   ok 6: status of partial commit excluding new file in index
* passed all 6 test(s)
*** t7503-pre-commit-hook.sh ***
*   ok 1: with no hook
*   ok 2: --no-verify with no hook
*   ok 3: with succeeding hook
*   ok 4: --no-verify with succeeding hook
*   ok 5: with failing hook
*   ok 6: --no-verify with failing hook
*   ok 7: with non-executable hook
*   ok 8: --no-verify with non-executable hook
* passed all 8 test(s)
*** t7504-commit-msg-hook.sh ***
*   ok 1: with no hook
*   ok 2: with no hook (editor)
*   ok 3: --no-verify with no hook
*   ok 4: --no-verify with no hook (editor)
*   ok 5: with succeeding hook
*   ok 6: with succeeding hook (editor)
*   ok 7: --no-verify with succeeding hook
*   ok 8: --no-verify with succeeding hook (editor)
*   ok 9: with failing hook
*   ok 10: with failing hook (editor)
*   ok 11: --no-verify with failing hook
*   ok 12: --no-verify with failing hook (editor)
*   ok 13: with non-executable hook
*   ok 14: with non-executable hook (editor)
*   ok 15: --no-verify with non-executable hook
*   ok 16: --no-verify with non-executable hook (editor)
*   ok 17: hook edits commit message
*   ok 18: hook edits commit message (editor)
*   ok 19: hook doesn't edit commit message
*   ok 20: hook doesn't edit commit message (editor)
* passed all 20 test(s)
*** t7600-merge.sh ***
*   ok 1: setup
*   ok 2: test option parsing
*   ok 3: merge c0 with c1
*   ok 4: merge c1 with c2
*   ok 5: merge c1 with c2 and c3
*   ok 6: merge c0 with c1 (no-commit)
*   ok 7: merge c1 with c2 (no-commit)
*   ok 8: merge c1 with c2 and c3 (no-commit)
*   ok 9: merge c0 with c1 (squash)
*   ok 10: merge c1 with c2 (squash)
*   ok 11: merge c1 with c2 and c3 (squash)
*   ok 12: merge c1 with c2 (no-commit in config)
*   ok 13: merge c1 with c2 (squash in config)
*   ok 14: override config option -n
*   ok 15: override config option --summary
*   ok 16: merge c1 with c2 (override --no-commit)
*   ok 17: merge c1 with c2 (override --squash)
*   ok 18: merge c0 with c1 (no-ff)
*   ok 19: merge c0 with c1 (ff overrides no-ff)
* passed all 19 test(s)
*** t8001-annotate.sh ***
*   ok 1: prepare reference tree
*   ok 2: check all lines blamed on A
*   ok 3: Setup new lines blamed on B
*   ok 4: Two lines blamed on A, two on B
*   ok 5: merge-setup part 1
*   ok 6: Two lines blamed on A, two on B, two on B1
*   ok 7: merge-setup part 2
*   ok 8: Two lines blamed on A, one on B, one on B2
*   ok 9: merge-setup part 3
*   ok 10: Two lines blamed on A, one on B, two on B1, one on B2
*   ok 11: Annotating an old revision works
*   ok 12: Annotating an old revision works
*   ok 13: merge-setup part 4
*   ok 14: Two lines blamed on A, one on B, two on B1, one on B2, one on A U Thor
*   ok 15: an incomplete line added
*   ok 16: With incomplete lines.
*   ok 17: some edit
*   ok 18: some edit
*   ok 19: Annotating an old revision works
* passed all 19 test(s)
*** t8002-blame.sh ***
*   ok 1: prepare reference tree
*   ok 2: check all lines blamed on A
*   ok 3: Setup new lines blamed on B
*   ok 4: Two lines blamed on A, two on B
*   ok 5: merge-setup part 1
*   ok 6: Two lines blamed on A, two on B, two on B1
*   ok 7: merge-setup part 2
*   ok 8: Two lines blamed on A, one on B, one on B2
*   ok 9: merge-setup part 3
*   ok 10: Two lines blamed on A, one on B, two on B1, one on B2
*   ok 11: Annotating an old revision works
*   ok 12: Annotating an old revision works
*   ok 13: merge-setup part 4
*   ok 14: Two lines blamed on A, one on B, two on B1, one on B2, one on A U Thor
*   ok 15: an incomplete line added
*   ok 16: With incomplete lines.
*   ok 17: some edit
*   ok 18: some edit
* passed all 18 test(s)
*** t8003-blame.sh ***
*   ok 1: setup
*   ok 2: straight copy without -C
*   ok 3: straight move without -C
*   ok 4: straight copy with -C
*   ok 5: straight move with -C
*   ok 6: straight copy with -C -C
*   ok 7: straight move with -C -C
*   ok 8: append without -C
*   ok 9: append with -C
*   ok 10: append with -C -C
*   ok 11: append with -C -C -C
*   ok 12: blame wholesale copy
*   ok 13: blame wholesale copy and more
* passed all 13 test(s)
*** t8004-blame.sh ***
*   ok 1: setup first case
*   ok 2: blame runs on unconflicted file while other file has conflicts
*   ok 3: blame runs on conflicted file in stages 1,3
* passed all 3 test(s)
*** t9001-send-email.sh ***
*   ok 1: prepare reference tree
*   ok 2: Setup helper tool
*   ok 3: Extract patches
*   ok 4: Send patches
*   ok 5: Verify commandline
*   ok 6: Show all headers
*   ok 7: reject long lines
*   ok 8: no patch was sent
*   ok 9: allow long lines with --no-validate
* passed all 9 test(s)
*** t9100-git-svn-basic.sh ***
define NO_SVN_TESTS to skip git-svn tests
*   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 bar/zzz (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
UTF-8 locale not set, test skipped ()
*   ok 14: test fetch functionality (svn => git) with alternate GIT_SVN_ID
*   ok 15: check imported tree checksums expected tree checksums
*   ok 16: exit if remote refs are ambigious
*   ok 17: exit if init-ing a would clobber a URL
*   ok 18: init allows us to connect to another directory in the same repo
*   ok 19: able to dcommit to a subdirectory
*   ok 20: able to set-tree to a subdirectory
* passed all 20 test(s)
*** 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)
* FAIL 23: test show-ignore
	
		cd test_wc &&
		mkdir -p deeply/nested/directory &&
		touch deeply/nested/directory/.keep &&
		svn add deeply &&
		svn up &&
		svn propset -R svn:ignore 'no-such-file*' .
		svn commit -m 'propset svn:ignore'
		cd .. &&
		git-svn show-ignore > show-ignore.got &&
		cmp show-ignore.expect show-ignore.got
		
* FAIL 24: test create-ignore
	
		git-svn fetch && git pull . remotes/git-svn &&
		git-svn create-ignore &&
		cmp ./.gitignore create-ignore.expect &&
		cmp ./deeply/.gitignore create-ignore.expect &&
		cmp ./deeply/nested/.gitignore create-ignore.expect &&
		cmp ./deeply/nested/directory/.gitignore create-ignore.expect &&
		git ls-files -s | grep gitignore | cmp - create-ignore-index.expect
		
* FAIL 25: test propget
	
		git-svn propget svn:ignore . | cmp - prop.expect &&
		cd deeply &&
		git-svn propget svn:ignore . | cmp - ../prop.expect &&
		git-svn propget svn:entry:committed-rev nested/directory/.keep 	  | cmp - ../prop2.expect &&
		git-svn propget svn:ignore .. | cmp - ../prop.expect &&
		git-svn propget svn:ignore nested/ | cmp - ../prop.expect &&
		git-svn propget svn:ignore ./nested | cmp - ../prop.expect &&
		git-svn propget svn:ignore .././deeply/nested | cmp - ../prop.expect
		
* FAIL 26: test proplist
	
		git-svn proplist . | cmp - prop.expect &&
		git-svn proplist nested/directory/.keep | cmp - prop2.expect
		
* failed 4 among 26 test(s)
make[2]: *** [t9101-git-svn-props.sh] Error 1
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/t'
make[1]: *** [test] Error 2
make[1]: Leaving directory `/build/buildd/git-core-1.5.4.3'
make[1]: Entering directory `/build/buildd/git-core-1.5.4.3'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/git-gui'
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/git-gui'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/gitk-git'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/gitk-git'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/perl'
make[3]: Entering directory `/build/buildd/git-core-1.5.4.3/perl'
make[3]: Leaving directory `/build/buildd/git-core-1.5.4.3/perl'
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/perl'
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/templates'
make[2]: Leaving directory `/build/buildd/git-core-1.5.4.3/templates'
/usr/bin/make -C t/ all
make[2]: Entering directory `/build/buildd/git-core-1.5.4.3/t'
*** t0000-basic.sh ***
* expecting success: cmp -s /dev/null should-be-empty
*   ok 1: .git/objects should be empty after git init in an empty repo.

* expecting success: test $(wc -l < full-of-directories) = 3
*   ok 2: .git/objects should have 3 subdirectories.

* expecting failure: git update-index should-be-empty
error: should-be-empty: cannot add to the index - missing --add option?
fatal: Unable to process path should-be-empty
*   ok 3: git update-index without --add should fail adding.

* expecting success: git update-index --add should-be-empty
*   ok 4: git update-index with --add should succeed.

* expecting success: tree=$(git write-tree)
*   ok 5: writing tree out with git write-tree

* expecting success: test "$tree" = 7bb943559a305bdd6bdee2cef6e5df2413c3d30a
*   ok 6: validate object ID of a known tree.

* expecting failure: git update-index should-be-empty
error: should-be-empty: does not exist and --remove not passed
fatal: Unable to process path should-be-empty
*   ok 7: git update-index without --remove should fail removing.

* expecting success: git update-index --remove should-be-empty
*   ok 8: git update-index with --remove should be able to remove.

* expecting success: tree=$(git write-tree)
*   ok 9: git write-tree should be able to write an empty tree.

* expecting success: test "$tree" = 4b825dc642cb6eb9a060e54bf8d69288fbee4904
*   ok 10: validate object ID of a known tree.

* expecting success: find path* ! -type d -print | xargs git update-index --add
*   ok 11: adding various types of objects with git update-index --add.

* expecting success: git ls-files --stage >current
*   ok 12: showing stage with git ls-files --stage

* expecting success: diff current expected
*   ok 13: validate git ls-files output for a known tree.

* expecting success: tree=$(git write-tree)
*   ok 14: writing tree out with git write-tree.

* expecting success: test "$tree" = 087704a96baf1c2d1c869a8b084481e121c88b5b
*   ok 15: validate object ID for a known tree.

* expecting success: git ls-tree $tree >current
*   ok 16: showing tree with git ls-tree

* expecting success: diff current expected
*   ok 17: git ls-tree output for a known tree.

* expecting success: git ls-tree -r $tree >current
*   ok 18: showing tree with git ls-tree -r

* expecting success: diff current expected
*   ok 19: git ls-tree -r output for a known tree.

* expecting success: git ls-tree -r -t $tree >current
*   ok 20: showing tree with git ls-tree -r -t

* expecting success: diff current expected
*   ok 21: git ls-tree -r output for a known tree.

* expecting success: ptree=$(git write-tree --prefix=path3)
*   ok 22: writing partial tree out with git write-tree --prefix.

* expecting success: test "$ptree" = 21ae8269cacbe57ae09138dcc3a2887f904d02b3
*   ok 23: validate object ID for a known tree.

* expecting success: ptree=$(git write-tree --prefix=path3/subp3)
*   ok 24: writing partial tree out with git write-tree --prefix.

* expecting success: test "$ptree" = 3c5e5399f3a333eddecce7a9b9465b63f65f51e2
*   ok 25: validate object ID for a known tree.

* expecting success: git update-index --index-info < badobjects
*   ok 26: put invalid objects into the index.

* expecting failure: git write-tree
error: invalid object 1000000000000000000000000000000000000000
fatal: git-write-tree: error building trees
*   ok 27: writing this tree without --missing-ok.

* expecting success: git write-tree --missing-ok
851a367613bb6e1f0b2b518323eafed530b5b4c4
*   ok 28: writing this tree with --missing-ok.

* expecting success: git read-tree $tree &&
     test -f .git/index &&
     newtree=$(git write-tree) &&
     test "$newtree" = "$tree"
*   ok 29: git read-tree followed by write-tree should be idempotent.

* expecting success: git diff-files >current && diff >/dev/null -b current expected
*   ok 30: validate git diff-files output for a know cache/work tree state.

* expecting success: git update-index --refresh
*   ok 31: git update-index --refresh should succeed.

* expecting success: git diff-files >current && cmp -s current /dev/null
*   ok 32: no diff after checkout and git update-index --refresh.

* expecting success: commit0=$(echo NO | git commit-tree $P) &&
     tree=$(git show --pretty=raw $commit0 |
	 sed -n -e "s/^tree //p" -e "/^author /q") &&
     test "z$tree" = "z$P"
*   ok 33: git commit-tree records the correct tree in a commit.

* expecting success: commit1=$(echo NO | git commit-tree $P -p $commit0) &&
     parent=$(git show --pretty=raw $commit1 |
	 sed -n -e "s/^parent //p" -e "/^author /q") &&
     test "z$commit0" = "z$parent"
*   ok 34: git commit-tree records the correct parent in a commit.

* expecting success: commit2=$(echo NO | git commit-tree $P -p $commit0 -p $commit0) &&
     parent=$(git show --pretty=raw $commit2 |
	 sed -n -e "s/^parent //p" -e "/^author /q" |
	 sort -u) &&
     test "z$commit0" = "z$parent" &&
     numparent=$(git show --pretty=raw $commit2 |
	 sed -n -e "s/^parent //p" -e "/^author /q" |
	 wc -l) &&
     test $numparent = 1
error: duplicate parent 1c9b398d4e47b08eb11ddc572883d647ed18c880 ignored
*   ok 35: git commit-tree omits duplicated parent in a commit.

* expecting success: 
	mv path0 tmp &&
	mv path2 path0 &&
	mv tmp path2 &&
	git update-index --add --replace path2 path0/file2 &&
	numpath0=$(git ls-files path0 | wc -l) &&
	test $numpath0 = 1

*   ok 36: update-index D/F conflict

* expecting success: 
	mkdir first &&
	ln -s ../.git first/.git &&
	mkdir second &&
	ln -s ../first second/other &&
	mkdir third &&
	dir="$(cd .git; pwd -P)" &&
	dir2=third/../second/other/.git &&
	test "$dir" = "$(test-absolute-path $dir2)" &&
	file="$dir"/index &&
	test "$file" = "$(test-absolute-path $dir2/index)" &&
	ln -s ../first/file .git/syml &&
	sym="$(cd first; pwd -P)"/file &&
	test "$sym" = "$(test-absolute-path $dir2/syml)"

*   ok 37: absolute path works as expected

* passed all 37 test(s)
*** t0001-init.sh ***
* expecting success: 
	(
		unset GIT_DIR GIT_WORK_TREE
		mkdir plain &&
		cd plain &&
		git init
	) &&
	check_config plain/.git false unset

Initialized empty Git repository in .git/
*   ok 1: plain

* expecting success: 
	if (
		unset GIT_DIR
		mkdir plain-wt &&
		cd plain-wt &&
		GIT_WORK_TREE=$(pwd) git init
	)
	then
		echo Should have failed -- GIT_WORK_TREE should not be used
		false
	fi

fatal: GIT_WORK_TREE (or --work-tree=<directory>) not allowed without specifying GIT_DIR (or --git-dir=<directory>)
*   ok 2: plain with GIT_WORK_TREE

* expecting success: 
	(
		unset GIT_DIR GIT_WORK_TREE GIT_CONFIG
		mkdir plain-bare-1 &&
		cd plain-bare-1 &&
		git --bare init
	) &&
	check_config plain-bare-1 true unset

Initialized empty Git repository in /build/buildd/git-core-1.5.4.3/t/trash/plain-bare-1/
*   ok 3: plain bare

* expecting success: 
	if (
		unset GIT_DIR GIT_CONFIG
		mkdir plain-bare-2 &&
		cd plain-bare-2 &&
		GIT_WORK_TREE=$(pwd) git --bare init
	)
	then
		echo Should have failed -- GIT_WORK_TREE should not be used
		false
	fi

fatal: GIT_WORK_TREE (or --work-tree=<directory>) not allowed without specifying GIT_DIR (or --git-dir=<directory>)
*   ok 4: plain bare with GIT_WORK_TREE

* expecting success: 

	(
		unset GIT_CONFIG
		mkdir git-dir-bare.git &&
		GIT_DIR=git-dir-bare.git git init
	) &&
	check_config git-dir-bare.git true unset

Initialized empty Git repository in git-dir-bare.git/
*   ok 5: GIT_DIR bare

* expecting success: 

	(
		unset GIT_CONFIG
		mkdir non-bare &&
		cd non-bare &&
		GIT_DIR=.git git init
	) &&
	check_config non-bare/.git false unset

Initialized empty Git repository in .git/
*   ok 6: GIT_DIR non-bare

* expecting success: 

	(
		unset GIT_CONFIG
		mkdir git-dir-wt-1.git &&
		GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-1.git git init
	) &&
	check_config git-dir-wt-1.git false "$(pwd)"

Initialized empty Git repository in git-dir-wt-1.git/
*   ok 7: GIT_DIR & GIT_WORK_TREE (1)

* expecting success: 

	if (
		unset GIT_CONFIG
		mkdir git-dir-wt-2.git &&
		GIT_WORK_TREE=$(pwd) GIT_DIR=git-dir-wt-2.git git --bare init
	)
	then
		echo Should have failed -- --bare should not be used
		false
	fi

fatal: GIT_WORK_TREE (or --work-tree=<directory>) not allowed without specifying GIT_DIR (or --git-dir=<directory>)
*   ok 8: GIT_DIR & GIT_WORK_TREE (2)

* passed all 8 test(s)
*** t0003-attributes.sh ***
* expecting success: 

	mkdir -p a/b/d a/c &&
	(
		echo "f	test=f"
	) >.gitattributes &&
	(
		echo "g test=a/g" &&
		echo "b/g test=a/b/g"
	) >a/.gitattributes &&
	(
		echo "h test=a/b/h" &&
		echo "d/* test=a/b/d/*"
	) >a/b/.gitattributes


*   ok 1: setup

* expecting success: 

	attr_check f f &&
	attr_check a/f f &&
	attr_check a/c/f f &&
	attr_check a/g a/g &&
	attr_check a/b/g a/b/g &&
	attr_check b/g unspecified &&
	attr_check a/b/h a/b/h &&
	attr_check a/b/d/g "a/b/d/*"


*   ok 2: attribute test

* passed all 2 test(s)
*** t0010-racy-git.sh ***
* expecting success: test "" != "$files"
*   ok 1: Racy GIT trial #0 part A

* expecting success: test "" != "$files"
*   ok 2: Racy GIT trial #0 part B

* expecting success: test "" != "$files"
*   ok 3: Racy GIT trial #1 part A

* expecting success: test "" != "$files"
*   ok 4: Racy GIT trial #1 part B

* expecting success: test "" != "$files"
*   ok 5: Racy GIT trial #2 part A

* expecting success: test "" != "$files"
*   ok 6: Racy GIT trial #2 part B

* expecting success: test "" != "$files"
*   ok 7: Racy GIT trial #3 part A

* expecting success: test "" != "$files"
*   ok 8: Racy GIT trial #3 part B

* expecting success: test "" != "$files"
*   ok 9: Racy GIT trial #4 part A

* expecting success: test "" != "$files"
*   ok 10: Racy GIT trial #4 part B

* passed all 10 test(s)
*** t0020-crlf.sh ***
* expecting success: 

	git config core.autocrlf false &&

	for w in Hello world how are you; do echo $w; done >one &&
	mkdir dir &&
	for w in I am very very fine thank you; do echo $w; done >dir/two &&
	for w in Oh here is NULQin text here; do echo $w; done | q_to_nul >three &&
	git add . &&

	git commit -m initial &&

	one=`git rev-parse HEAD:one` &&
	dir=`git rev-parse HEAD:dir` &&
	two=`git rev-parse HEAD:dir/two` &&
	three=`git rev-parse HEAD:three` &&

	for w in Some extra lines here; do echo $w; done >>one &&
	git diff >patch.file &&
	patched=`git hash-object --stdin <one` &&
	git read-tree --reset -u HEAD &&

	echo happy.

Created initial commit 8f7369f: initial
 3 files changed, 12 insertions(+), 0 deletions(-)
 create mode 100644 dir/two
 create mode 100644 one
 create mode 100644 three
happy.
*   ok 1: setup

* expecting success: 

	rm -f tmp one dir/two three &&
	git read-tree --reset -u HEAD &&
	git config core.autocrlf input &&

	for f in one dir/two
	do
		append_cr <$f >tmp && mv -f tmp $f &&
		git update-index -- $f || {
			echo Oops
			false
			break
		}
	done &&

	differs=`git diff-index --cached HEAD` &&
	test -z "$differs" || {
		echo Oops "$differs"
		false
	}


*   ok 2: update with autocrlf=input

* expecting success: 

	rm -f tmp one dir/two three &&
	git read-tree --reset -u HEAD &&
	git config core.autocrlf true &&

	for f in one dir/two
	do
		append_cr <$f >tmp && mv -f tmp $f &&
		git update-index -- $f || {
			echo "Oops $f"
			false
			break
		}
	done &&

	differs=`git diff-index --cached HEAD` &&
	test -z "$differs" || {
		echo Oops "$differs"
		false
	}


*   ok 3: update with autocrlf=true

* expecting success: 

	rm -f tmp one dir/two three &&
	git config core.autocrlf true &&
	git read-tree --reset -u HEAD &&

	for f in one dir/two
	do
		remove_cr "$f" >tmp && mv -f tmp $f &&
		git update-index -- $f || {
			echo "Eh? $f"
			false
			break
		}
	done &&
	test "$one" = `git hash-object --stdin <one` &&
	test "$two" = `git hash-object --stdin <dir/two` &&
	differs=`git diff-index --cached HEAD` &&
	test -z "$differs" || {
		echo Oops "$differs"
		false
	}

*   ok 4: checkout with autocrlf=true

* expecting success: 

	rm -f tmp one dir/two three &&
	git config core.autocrlf input &&
	git read-tree --reset -u HEAD &&

	for f in one dir/two
	do
		if remove_cr "$f" >/dev/null
		then
			echo "Eh? $f"
			false
			break
		else
			git update-index -- $f
		fi
	done &&
	test "$one" = `git hash-object --stdin <one` &&
	test "$two" = `git hash-object --stdin <dir/two` &&
	differs=`git diff-index --cached HEAD` &&
	test -z "$differs" || {
		echo Oops "$differs"
		false
	}

*   ok 5: checkout with autocrlf=input

* expecting success: 

	rm -f tmp one dir/two three &&
	git config core.autocrlf input &&
	git read-tree --reset -u HEAD &&

	git apply patch.file &&
	test "$patched" = "`git hash-object --stdin <one`" || {
		echo "Eh?  apply without index"
		false
	}

*   ok 6: apply patch (autocrlf=input)

* expecting success: 

	rm -f tmp one dir/two three &&
	git config core.autocrlf input &&
	git read-tree --reset -u HEAD &&

	git apply --cached patch.file &&
	test "$patched" = `git rev-parse :one` || {
		echo "Eh?  apply with --cached"
		false
	}

*   ok 7: apply patch --cached (autocrlf=input)

* expecting success: 

	rm -f tmp one dir/two three &&
	git config core.autocrlf input &&
	git read-tree --reset -u HEAD &&

	git apply --index patch.file &&
	test "$patched" = `git rev-parse :one` &&
	test "$patched" = `git hash-object --stdin <one` || {
		echo "Eh?  apply with --index"
		false
	}

*   ok 8: apply patch --index (autocrlf=input)

* expecting success: 

	rm -f tmp one dir/two three &&
	git config core.autocrlf true &&
	git read-tree --reset -u HEAD &&

	git apply patch.file &&
	test "$patched" = "`remove_cr one | git hash-object --stdin`" || {
		echo "Eh?  apply without index"
		false
	}

*   ok 9: apply patch (autocrlf=true)

* expecting success: 

	rm -f tmp one dir/two three &&
	git config core.autocrlf true &&
	git read-tree --reset -u HEAD &&

	git apply --cached patch.file &&
	test "$patched" = `git rev-parse :one` || {
		echo "Eh?  apply without index"
		false
	}

*   ok 10: apply patch --cached (autocrlf=true)

* expecting success: 

	rm -f tmp one dir/two three &&
	git config core.autocrlf true &&
	git read-tree --reset -u HEAD &&

	git apply --index patch.file &&
	test "$patched" = `git rev-parse :one` &&
	test "$patched" = "`remove_cr one | git hash-object --stdin`" || {
		echo "Eh?  apply with --index"
		false
	}

*   ok 11: apply patch --index (autocrlf=true)

* expecting success: 

	rm -f tmp one dir/two three &&
	echo "two -crlf" >.gitattributes &&
	git config core.autocrlf true &&
	git read-tree --reset -u HEAD &&

	if remove_cr dir/two >/dev/null
	then
		echo "Huh?"
		false
	else
		: happy
	fi &&

	if remove_cr one >/dev/null
	then
		: happy
	else
		echo "Huh?"
		false
	fi &&

	if remove_cr three >/dev/null
	then
		echo "Huh?"
		false
	else
		: happy
	fi

*   ok 12: .gitattributes says two is binary

* expecting success: 

	rm -f tmp one dir/two three &&
	echo "two crlf=input" >.gitattributes &&
	git read-tree --reset -u HEAD &&

	if remove_cr dir/two >/dev/null
	then
		echo "Huh?"
		false
	else
		: happy
	fi

*   ok 13: .gitattributes says two is input

* expecting success: 

	rm -f tmp one dir/two three &&
	echo "t* crlf" >.gitattributes &&
	git read-tree --reset -u HEAD &&

	if remove_cr dir/two >/dev/null
	then
		: happy
	else
		echo "Huh?"
		false
	fi &&

	if remove_cr three >/dev/null
	then
		: happy
	else
		echo "Huh?"
		false
	fi

*   ok 14: .gitattributes says two and three are text

* expecting success: 

	echo "one -crlf" >>.gitattributes &&
	git add .gitattributes &&
	git commit -m "Add .gitattributes" &&

	rm -rf tmp one dir .gitattributes patch.file three &&
	git read-tree --reset -u HEAD &&

	if remove_cr one >/dev/null
	then
		echo "Eh? one should not have CRLF"
		false
	else
		: happy
	fi &&
	remove_cr three >/dev/null || {
		echo "Eh? three should still have CRLF"
		false
	}

Created commit 0bc318c: Add .gitattributes
 1 files changed, 2 insertions(+), 0 deletions(-)
 create mode 100644 .gitattributes
*   ok 15: in-tree .gitattributes (1)

* expecting success: 

	rm -rf tmp one dir .gitattributes patch.file three &&
	git read-tree --reset HEAD &&
	git checkout-index -f -q -u -a &&

	if remove_cr one >/dev/null
	then
		echo "Eh? one should not have CRLF"
		false
	else
		: happy
	fi &&
	remove_cr three >/dev/null || {
		echo "Eh? three should still have CRLF"
		false
	}

*   ok 16: in-tree .gitattributes (2)

* expecting success: 

	rm -rf tmp one dir .gitattributes patch.file three &&
	git read-tree --reset HEAD &&
	git checkout-index -u .gitattributes &&
	git checkout-index -u one dir/two three &&

	if remove_cr one >/dev/null
	then
		echo "Eh? one should not have CRLF"
		false
	else
		: happy
	fi &&
	remove_cr three >/dev/null || {
		echo "Eh? three should still have CRLF"
		false
	}

*   ok 17: in-tree .gitattributes (3)

* expecting success: 

	rm -rf tmp one dir .gitattributes patch.file three &&
	git read-tree --reset HEAD &&
	git checkout-index -u one dir/two three &&
	git checkout-index -u .gitattributes &&

	if remove_cr one >/dev/null
	then
		echo "Eh? one should not have CRLF"
		false
	else
		: happy
	fi &&
	remove_cr three >/dev/null || {
		echo "Eh? three should still have CRLF"
		false
	}

*   ok 18: in-tree .gitattributes (4)

* expecting success: 

	echo "three +crlf" >>.gitattributes &&
	git diff


+crlf is not a valid attribute name: .gitattributes:3
diff --git a/.gitattributes b/.gitattributes
index e4c8c2d..880a614 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,3 @@
 t* crlf
 one -crlf
+three +crlf
*   ok 19: invalid .gitattributes (must not crash)

* passed all 19 test(s)
*** t0021-conversion.sh ***
* expecting success: 
	git config filter.rot13.smudge ./rot13.sh &&
	git config filter.rot13.clean ./rot13.sh &&

	{
	    echo "*.t filter=rot13"
	    echo "*.i ident"
	} >.gitattributes &&

	{
	    echo a b c d e f g h i j k l m
	    echo n o p q r s t u v w x y z
	    echo '$Id$'
	} >test &&
	cat test >test.t &&
	cat test >test.o &&
	cat test >test.i &&
	git add test test.t test.i &&
	rm -f test test.t test.i &&
	git checkout -- test test.t test.i

*   ok 1: setup

* expecting success: 

	cmp test.o test &&
	cmp test.o test.t &&

	# ident should be stripped in the repository
	git diff --raw --exit-code :test :test.i &&
	id=$(git rev-parse --verify :test) &&
	embedded=$(sed -ne "$script" test.i) &&
	test "z$id" = "z$embedded" &&

	git cat-file blob :test.t > test.r &&

	./rot13.sh < test.o > test.t &&
	cmp test.r test.t

*   ok 2: check

* expecting success: 
	{
		echo "File with expanded keywords"
		echo "\$Id\$"
		echo "\$Id:\$"
		echo "\$Id: 0000000000000000000000000000000000000000 \$"
		echo "\$Id: NoSpaceAtEnd\$"
		echo "\$Id:NoSpaceAtFront \$"
		echo "\$Id:NoSpaceAtEitherEnd\$"
		echo "\$Id: NoTerminatingSymbol"
	} > expanded-keywords &&

	{
		echo "File with expanded keywords"
		echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
		echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
		echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
		echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
		echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
		echo "\$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c \$"
		echo "\$Id: NoTerminatingSymbol"
	} > expected-output &&

	git add expanded-keywords &&
	git commit -m "File with keywords expanded" &&

	echo "expanded-keywords ident" >> .gitattributes &&

	rm -f expanded-keywords &&
	git checkout -- expanded-keywords &&
	cat expanded-keywords &&
	cmp expanded-keywords expected-output

Created initial commit ae52f85: File with keywords expanded
 4 files changed, 17 insertions(+), 0 deletions(-)
 create mode 100644 expanded-keywords
 create mode 100644 test
 create mode 100644 test.i
 create mode 100644 test.t
File with expanded keywords
$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c $
$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c $
$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c $
$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c $
$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c $
$Id: 4f21723e7b15065df7de95bd46c8ba6fb1818f4c $
$Id: NoTerminatingSymbol
*   ok 3: expanded_in_repo

* passed all 3 test(s)
*** t0022-crlf-rename.sh ***
* expecting success: 

	cat ../t0022-crlf-rename.sh >sample &&
	git add sample &&

	test_tick &&
	git commit -m Initial &&

	sed -e "s/\$/
/" ../t0022-crlf-rename.sh >elpmas &&
	git add elpmas &&
	rm -f sample &&

	test_tick &&
	git commit -a -m Second


Created initial commit 85a16f2: Initial
 1 files changed, 33 insertions(+), 0 deletions(-)
 create mode 100644 sample
Created commit ec6a5d7: Second
 1 files changed, 33 insertions(+), 33 deletions(-)
 rename sample => elpmas (94%)
*   ok 1: setup

* expecting success: 

	git diff-tree -M -r --name-status HEAD^ HEAD |
	sed -e "s/R[0-9]*/RNUM/" >actual &&
	echo "RNUM	sample	elpmas" >expect &&
	diff -u expect actual


*   ok 2: diff -M

* passed all 2 test(s)
*** t0023-crlf-am.sh ***
* expecting success: 

	git config core.autocrlf true &&
	echo foo >bar &&
	git add bar &&
	test_tick &&
	git commit -m initial


Created initial commit 1adb513: initial
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 bar
*   ok 1: setup

* expecting success: 

	git am --binary -3 <patchfile &&
	git diff-files --name-status --exit-code


Applying test1
*   ok 2: am

* passed all 2 test(s)
*** t0030-stripspace.sh ***
* expecting success: 
    echo "$ttt" >expect &&
    git stripspace <expect >actual &&
    git diff expect actual &&

    echo "$ttt$ttt" >expect &&
    git stripspace <expect >actual &&
    git diff expect actual &&

    echo "$ttt$ttt$ttt" >expect &&
    git stripspace <expect >actual &&
    git diff expect actual &&

    echo "$ttt$ttt$ttt$ttt" >expect &&
    git stripspace <expect >actual &&
    git diff expect actual

*   ok 1: long lines without spaces should be unchanged

* expecting success: 
    echo "$sss$ttt" >expect &&
    git stripspace <expect >actual &&
    git diff expect actual &&

    echo "$sss$sss$ttt" >expect &&
    git stripspace <expect >actual &&
    git diff expect actual &&

    echo "$sss$sss$sss$ttt" >expect &&
    git stripspace <expect >actual &&
    git diff expect actual

*   ok 2: lines with spaces at the beginning should be unchanged

* expecting success: 
    echo "$ttt$sss$ttt" >expect &&
    git stripspace <expect >actual &&
    git diff expect actual &&

    echo "$ttt$sss$sss$ttt" >expect &&
    git stripspace <expect >actual &&
    git diff expect actual

*   ok 3: lines with intermediate spaces should be unchanged

* expecting success: 
    printf "$ttt

$ttt
" > expect &&
    printf "$ttt




$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt

$ttt
" > expect &&
    printf "$ttt$ttt




$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt$ttt

$ttt
" > expect &&
    printf "$ttt$ttt$ttt




$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt

$ttt
" > expect &&
    printf "$ttt




$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt

$ttt$ttt
" > expect &&
    printf "$ttt




$ttt$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt

$ttt$ttt$ttt
" > expect &&
    printf "$ttt




$ttt$ttt$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt

$ttt
" > expect &&
    printf "$ttt
	
 

  		
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt

$ttt
" > expect &&
    printf "$ttt$ttt
	
 

  		
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt$ttt

$ttt
" > expect &&
    printf "$ttt$ttt$ttt
	
 

  		
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt

$ttt
" > expect &&
    printf "$ttt
	
 

  		
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt

$ttt$ttt
" > expect &&
    printf "$ttt
	
 

  		
$ttt$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt

$ttt$ttt$ttt
" > expect &&
    printf "$ttt
	
 

  		
$ttt$ttt$ttt
" | git stripspace >actual &&
    git diff expect actual

*   ok 4: consecutive blank lines should be unified

* expecting success: 
    > expect &&

    printf "
" | git stripspace >actual &&
    git diff expect actual &&

    printf "


" | git stripspace >actual &&
    git diff expect actual &&

    printf "$sss
$sss
$sss
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$sss$sss
$sss

" | git stripspace >actual &&
    git diff expect actual &&

    printf "
$sss
$sss$sss
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$sss$sss$sss$sss


" | git stripspace >actual &&
    git diff expect actual &&

    printf "
$sss$sss$sss$sss

" | git stripspace >actual &&
    git diff expect actual &&

    printf "

$sss$sss$sss$sss
" | git stripspace >actual &&
    git diff expect actual

*   ok 5: only consecutive blank lines should be completely removed

* expecting success: 
    printf "$ttt
" > expect &&
    printf "
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
" > expect &&
    printf "


$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt
" > expect &&
    printf "


$ttt$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt$ttt
" > expect &&
    printf "


$ttt$ttt$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt$ttt$ttt
" > expect &&
    printf "


$ttt$ttt$ttt$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
" > expect &&

    printf "$sss
$sss
$sss
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "
$sss
$sss$sss
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$sss$sss
$sss

$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$sss$sss$sss


$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "
$sss$sss$sss

$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "

$sss$sss$sss
$ttt
" | git stripspace >actual &&
    git diff expect actual

*   ok 6: consecutive blank lines at the beginning should be removed

* expecting success: 
    printf "$ttt
" > expect &&
    printf "$ttt

" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
" > expect &&
    printf "$ttt



" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt
" > expect &&
    printf "$ttt$ttt



" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt$ttt
" > expect &&
    printf "$ttt$ttt$ttt



" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt$ttt$ttt
" > expect &&
    printf "$ttt$ttt$ttt$ttt



" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
" > expect &&

    printf "$ttt
$sss
$sss
$sss
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt

$sss
$sss$sss
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
$sss$sss
$sss

" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
$sss$sss$sss


" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt

$sss$sss$sss

" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt


$sss$sss$sss
" | git stripspace >actual &&
    git diff expect actual

*   ok 7: consecutive blank lines at the end should be removed

* expecting success: 
    test `printf "$ttt" | git stripspace | wc -l` -gt 0 &&
    test `printf "$ttt$ttt" | git stripspace | wc -l` -gt 0 &&
    test `printf "$ttt$ttt$ttt" | git stripspace | wc -l` -gt 0 &&
    test `printf "$ttt$ttt$ttt$ttt" | git stripspace | wc -l` -gt 0

*   ok 8: text without newline at end should end with newline

* expecting success: 
    test `printf "$ttt$sss" | git stripspace | wc -l` -gt 0 &&
    test `printf "$ttt$ttt$sss" | git stripspace | wc -l` -gt 0 &&
    test `printf "$ttt$ttt$ttt$sss" | git stripspace | wc -l` -gt 0 &&
    test `printf "$ttt$sss$sss" | git stripspace | wc -l` -gt 0 &&
    test `printf "$ttt$ttt$sss$sss" | git stripspace | wc -l` -gt 0 &&
    test `printf "$ttt$sss$sss$sss" | git stripspace | wc -l` -gt 0

*   ok 9: text plus spaces without newline at end should end with newline

* expecting failure: 
    printf "$ttt$sss" | git stripspace | grep -q "  " ||
    printf "$ttt$ttt$sss" | git stripspace | grep -q "  " ||
    printf "$ttt$ttt$ttt$sss" | git stripspace | grep -q "  " ||
    printf "$ttt$sss$sss" | git stripspace | grep -q "  " ||
    printf "$ttt$ttt$sss$sss" | git stripspace | grep -q "  " ||
    printf "$ttt$sss$sss$sss" | git stripspace | grep -q "  "

*   ok 10: text plus spaces without newline at end should not show spaces

* expecting success: 
    printf "$ttt
" >expect &&
    printf "$ttt$sss" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
" >expect &&
    printf "$ttt$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
" >expect &&
    printf "$ttt$sss$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt
" >expect &&
    printf "$ttt$ttt$sss" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt
" >expect &&
    printf "$ttt$ttt$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt$ttt
" >expect &&
    printf "$ttt$ttt$ttt$sss" | git stripspace >actual &&
    git diff expect actual

*   ok 11: text plus spaces without newline should show the correct lines

* expecting failure: 
    echo "$ttt$sss" | git stripspace | grep -q "  " ||
    echo "$ttt$ttt$sss" | git stripspace | grep -q "  " ||
    echo "$ttt$ttt$ttt$sss" | git stripspace | grep -q "  " ||
    echo "$ttt$sss$sss" | git stripspace | grep -q "  " ||
    echo "$ttt$ttt$sss$sss" | git stripspace | grep -q "  " ||
    echo "$ttt$sss$sss$sss" | git stripspace | grep -q "  "

*   ok 12: text plus spaces at end should not show spaces

* expecting success: 
    echo "$ttt" >expect &&
    echo "$ttt$sss" | git stripspace >actual &&
    git diff expect actual &&

    echo "$ttt" >expect &&
    echo "$ttt$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    echo "$ttt" >expect &&
    echo "$ttt$sss$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    echo "$ttt$ttt" >expect &&
    echo "$ttt$ttt$sss" | git stripspace >actual &&
    git diff expect actual &&

    echo "$ttt$ttt" >expect &&
    echo "$ttt$ttt$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    echo "$ttt$ttt$ttt" >expect &&
    echo "$ttt$ttt$ttt$sss" | git stripspace >actual &&
    git diff expect actual

*   ok 13: text plus spaces at end should be cleaned and newline must remain

* expecting success: 
    printf "" >expect &&

    echo | git stripspace >actual &&
    git diff expect actual &&

    echo "$sss" | git stripspace >actual &&
    git diff expect actual &&

    echo "$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    echo "$sss$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    echo "$sss$sss$sss$sss" | git stripspace >actual &&
    git diff expect actual

*   ok 14: spaces with newline at end should be replaced with empty string

* expecting failure: 
    printf "" | git stripspace | grep -q " " ||
    printf "$sss" | git stripspace | grep -q " " ||
    printf "$sss$sss" | git stripspace | grep -q " " ||
    printf "$sss$sss$sss" | git stripspace | grep -q " " ||
    printf "$sss$sss$sss$sss" | git stripspace | grep -q " "

*   ok 15: spaces without newline at end should not show spaces

* expecting success: 
    printf "" >expect &&

    printf "" | git stripspace >actual &&
    git diff expect actual &&

    printf "$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    printf "$sss$sss$sss" | git stripspace >actual &&
    git diff expect actual &&

    printf "$sss$sss$sss$sss" | git stripspace >actual &&
    git diff expect actual

*   ok 16: spaces without newline at end should be replaced with empty string

* expecting success: 
    printf "$ttt$ttt
$ttt
" >expect &&
    printf "$ttt$ttt
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
$ttt$ttt
$ttt
" >expect &&
    printf "$ttt
$ttt$ttt
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
$ttt
$ttt
$ttt$ttt
" >expect &&
    printf "$ttt
$ttt
$ttt
$ttt$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
$ttt

$ttt$ttt
$ttt
" >expect &&
    printf "$ttt
$ttt

$ttt$ttt
$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt$ttt

$ttt
$ttt$ttt
" >expect &&
    printf "$ttt$ttt

$ttt
$ttt$ttt
" | git stripspace >actual &&
    git diff expect actual &&

    printf "$ttt
$ttt$ttt

$ttt
" >expect &&
    printf "$ttt
$ttt$ttt

$ttt
" | git stripspace >actual &&
    git diff expect actual

*   ok 17: consecutive text lines should be unchanged

* expecting success: 
	test ! -z "$(echo "# comment" | git stripspace)" &&
	test -z "$(echo "# comment" | git stripspace -s)"

*   ok 18: strip comments, too

* passed all 18 test(s)
*** t0040-parse-options.sh ***
* expecting success: 
	! test-parse-options -h > output 2> output.err &&
	test ! -s output &&
	git diff expect.err output.err

*   ok 1: test help

* expecting success: 
	test-parse-options -s123 -b -i 1729 -b > output 2> output.err &&
	git diff expect output &&
	test ! -s output.err

*   ok 2: short options

* expecting success: 
	test-parse-options --boolean --integer 1729 --boolean --string2=321 \
		> output 2> output.err &&
	test ! -s output.err &&
	git diff expect output

*   ok 3: long options

* expecting success: 
	test-parse-options a1 --string 123 b1 --boolean -j 13 -- --boolean \
		> output 2> output.err &&
	test ! -s output.err &&
	git diff expect output

*   ok 4: intermingled arguments

* expecting success: 
	test-parse-options --int 2 --boolean --no-bo > output 2> output.err &&
	test ! -s output.err &&
	git diff expect output

*   ok 5: unambiguously abbreviated option

* expecting success: 
	test-parse-options --int=2 > output 2> output.err &&
	test ! -s output.err &&
	git diff expect output

*   ok 6: unambiguously abbreviated option with "="

* expecting failure: 
	test-parse-options --strin 123;
        test $? != 129

error: Ambiguous option: strin (could be --string or --string2)
usage: test-parse-options <options>

    -b, --boolean         get a boolean
    -i, --integer <n>     get a integer
    -j <n>                get a integer, too

string options
    -s, --string <string>
                          get a string
    --string2 <str>       get another string
    --st <st>             get another string (pervert ordering)
    -o <str>              get another string

*   ok 7: ambiguously abbreviated option

* expecting success: 
	test-parse-options --st 123 > output 2> output.err &&
	test ! -s output.err &&
	git diff expect output

*   ok 8: non ambiguous option (after two options it abbreviates)

* expecting success: 
	! test-parse-options -boolean > output 2> output.err &&
	test ! -s output &&
	git diff expect.err output.err

*   ok 9: detect possible typos

* passed all 9 test(s)
*** t1000-read-tree-m-3way.sh ***
* expecting success: git update-index --add $p &&
	    git update-index --add Z/$p
*   ok 1: adding test file NN and Z/NN

* expecting success: git update-index --add $p &&
	    git update-index --add Z/$p
*   ok 2: adding test file ND and Z/ND

* expecting success: git update-index --add $p &&
	    git update-index --add Z/$p
*   ok 3: adding test file NM and Z/NM

* expecting success: git update-index --add $p &&
	    git update-index --add Z/$p
*   ok 4: adding test file DN and Z/DN

* expecting success: git update-index --add $p &&
	    git update-index --add Z/$p
*   ok 5: adding test file DD and Z/DD

* expecting success: git update-index --add $p &&
	    git update-index --add Z/$p
*   ok 6: adding test file DM and Z/DM

* expecting success: git update-index --add $p &&
	    git update-index --add Z/$p
*   ok 7: adding test file MN and Z/MN

* expecting success: git update-index --add $p &&
	    git update-index --add Z/$p
*   ok 8: adding test file MD and Z/MD

* expecting success: git update-index --add $p &&
	    git update-index --add Z/$p
*   ok 9: adding test file MM and Z/MM

* expecting success: git update-index --add SS
*   ok 10: adding test file SS

* expecting success: git update-index --add TT
*   ok 11: adding test file TT

* expecting success: tree_O=$(git write-tree)
*   ok 12: prepare initial tree

* expecting success: git update-index --remove $to_remove
*   ok 13: change in branch A (removal)

* expecting success: git update-index MD
*   ok 14: change in branch A (modification)

* expecting success: git update-index MM
*   ok 15: change in branch A (modification)

* expecting success: git update-index MN
*   ok 16: change in branch A (modification)

* expecting success: git update-index Z/MD
*   ok 17: change in branch A (modification)

* expecting success: git update-index Z/MM
*   ok 18: change in branch A (modification)

* expecting success: git update-index Z/MN
*   ok 19: change in branch A (modification)

* expecting success: git update-index --add AN
*   ok 20: change in branch A (addition)

* expecting success: git update-index --add AA
*   ok 21: change in branch A (addition)

* expecting success: git update-index --add Z/AN
*   ok 22: change in branch A (addition)

* expecting success: git update-index --add Z/AA
*   ok 23: change in branch A (addition)

* expecting success: git update-index --add LL &&
     git update-index SS
*   ok 24: change in branch A (addition)

* expecting success: git update-index TT
*   ok 25: change in branch A (edit)

* expecting success: git update-index --add DF/DF
*   ok 26: change in branch A (change file to directory)

* expecting success: tree_A=$(git write-tree)
*   ok 27: recording branch A tree

* expecting success: git read-tree $tree_O &&
     git checkout-index -a
*   ok 28: reading original tree and checking out

* expecting success: git update-index --remove DD MD ND Z/DD Z/MD Z/ND
*   ok 29: change in branch B (removal)

* expecting success: git update-index DM
*   ok 30: change in branch B (modification)

* expecting success: git update-index MM
*   ok 31: change in branch B (modification)

* expecting success: git update-index NM
*   ok 32: change in branch B (modification)

* expecting success: git update-index Z/DM
*   ok 33: change in branch B (modification)

* expecting success: git update-index Z/MM
*   ok 34: change in branch B (modification)

* expecting success: git update-index Z/NM
*   ok 35: change in branch B (modification)

* expecting success: git update-index --add NA
*   ok 36: change in branch B (addition)

* expecting success: git update-index --add AA
*   ok 37: change in branch B (addition)

* expecting success: git update-index --add Z/NA
*   ok 38: change in branch B (addition)

* expecting success: git update-index --add Z/AA
*   ok 39: change in branch B (addition)

* expecting success: git update-index --add LL &&
     git update-index SS
*   ok 40: change in branch B (addition and modification)

* expecting success: git update-index TT
*   ok 41: change in branch B (modification)

* expecting success: git update-index --add DF
*   ok 42: change in branch B (addition of a file to conflict with directory)

* expecting success: tree_B=$(git write-tree)
*   ok 43: recording branch B tree

* expecting success: rm -f .git/index &&
     git read-tree $tree_O &&
     mkdir .orig-O &&
     git checkout-index --prefix=.orig-O/ -f -q -a &&
     rm -f .git/index &&
     git read-tree $tree_A &&
     mkdir .orig-A &&
     git checkout-index --prefix=.orig-A/ -f -q -a &&
     rm -f .git/index &&
     git read-tree $tree_B &&
     mkdir .orig-B &&
     git checkout-index --prefix=.orig-B/ -f -q -a
*   ok 44: keep contents of 3 trees for easy access

* expecting success: rm -fr [NDMALTS][NDMALTSF] Z &&
     rm .git/index &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 45: 3-way merge with git read-tree -m, empty cache

* expecting success: rm -fr [NDMALTS][NDMALTSF] Z &&
     rm .git/index &&
     git read-tree 997bbc4a0a51e0574168a4f637739380edebe4d7 &&
     git checkout-index -f -u -a &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 46: 3-way merge with git read-tree -m, match H

* expecting failure: rm -f .git/index XX &&
     echo XX >XX &&
     git update-index --add XX &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'XX' would be overwritten by merge. Cannot merge.
*   ok 47: 1 - must not have an entry not in A.

* expecting success: rm -f .git/index NA &&
     cp .orig-B/NA NA &&
     git update-index --add NA &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
*   ok 48: 2 - must match B in !O && !A && B case.

* expecting success: rm -f .git/index NA &&
     cp .orig-B/NA NA &&
     git update-index --add NA &&
     echo extra >>NA &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
*   ok 49: 2 - matching B alone is OK in !O && !A && B case.

* expecting success: rm -f .git/index AN &&
     cp .orig-A/AN AN &&
     git update-index --add AN &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 50: 3 - must match A in !O && A && !B case.

* expecting success: rm -f .git/index AN &&
     cp .orig-A/AN AN &&
     git update-index --add AN &&
     echo extra >>AN &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
*   ok 51: 3 - matching A alone is OK in !O && A && !B case.

* expecting failure: rm -f .git/index AN &&
     cp .orig-A/AN AN &&
     echo extra >>AN &&
     git update-index --add AN &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'AN' would be overwritten by merge. Cannot merge.
*   ok 52: 3 (fail) - must match A in !O && A && !B case.

* expecting success: rm -f .git/index AA &&
     cp .orig-A/AA AA &&
     git update-index --add AA &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 53: 4 - must match and be up-to-date in !O && A && B && A!=B case.

* expecting failure: rm -f .git/index AA &&
     cp .orig-A/AA AA &&
     git update-index --add AA &&
     echo extra >>AA &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'AA' not uptodate. Cannot merge.
*   ok 54: 4 (fail) - must match and be up-to-date in !O && A && B && A!=B case.

* expecting failure: rm -f .git/index AA &&
     cp .orig-A/AA AA &&
     echo extra >>AA &&
     git update-index --add AA &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'AA' would be overwritten by merge. Cannot merge.
*   ok 55: 4 (fail) - must match and be up-to-date in !O && A && B && A!=B case.

* expecting success: rm -f .git/index LL &&
     cp .orig-A/LL LL &&
     git update-index --add LL &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 56: 5 - must match in !O && A && B && A==B case.

* expecting success: rm -f .git/index LL &&
     cp .orig-A/LL LL &&
     git update-index --add LL &&
     echo extra >>LL &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 57: 5 - must match in !O && A && B && A==B case.

* expecting failure: rm -f .git/index LL &&
     cp .orig-A/LL LL &&
     echo extra >>LL &&
     git update-index --add LL &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'LL' would be overwritten by merge. Cannot merge.
*   ok 58: 5 (fail) - must match A in !O && A && B && A==B case.

* expecting failure: rm -f .git/index DD &&
     echo DD >DD
     git update-index --add DD &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'DD' would be overwritten by merge. Cannot merge.
*   ok 59: 6 - must not exist in O && !A && !B case

* expecting failure: rm -f .git/index DM &&
     cp .orig-B/DM DM &&
     git update-index --add DM &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'DM' would be overwritten by merge. Cannot merge.
*   ok 60: 7 - must not exist in O && !A && B && O!=B case

* expecting failure: rm -f .git/index DN &&
     cp .orig-B/DN DN &&
     git update-index --add DN &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'DN' would be overwritten by merge. Cannot merge.
*   ok 61: 8 - must not exist in O && !A && B && O==B case

* expecting success: rm -f .git/index MD &&
     cp .orig-A/MD MD &&
     git update-index --add MD &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 62: 9 - must match and be up-to-date in O && A && !B && O!=A case

* expecting failure: rm -f .git/index MD &&
     cp .orig-A/MD MD &&
     git update-index --add MD &&
     echo extra >>MD &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'MD' not uptodate. Cannot merge.
*   ok 63: 9 (fail) - must match and be up-to-date in O && A && !B && O!=A case

* expecting failure: rm -f .git/index MD &&
     cp .orig-A/MD MD &&
     echo extra >>MD &&
     git update-index --add MD &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'MD' would be overwritten by merge. Cannot merge.
*   ok 64: 9 (fail) - must match and be up-to-date in O && A && !B && O!=A case

* expecting success: rm -f .git/index ND &&
     cp .orig-A/ND ND &&
     git update-index --add ND &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 65: 10 - must match and be up-to-date in O && A && !B && O==A case

* expecting failure: rm -f .git/index ND &&
     cp .orig-A/ND ND &&
     git update-index --add ND &&
     echo extra >>ND &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'ND' not uptodate. Cannot merge.
*   ok 66: 10 (fail) - must match and be up-to-date in O && A && !B && O==A case

* expecting failure: rm -f .git/index ND &&
     cp .orig-A/ND ND &&
     echo extra >>ND &&
     git update-index --add ND &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'ND' would be overwritten by merge. Cannot merge.
*   ok 67: 10 (fail) - must match and be up-to-date in O && A && !B && O==A case

* expecting success: rm -f .git/index MM &&
     cp .orig-A/MM MM &&
     git update-index --add MM &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 68: 11 - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case

* expecting failure: rm -f .git/index MM &&
     cp .orig-A/MM MM &&
     git update-index --add MM &&
     echo extra >>MM &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'MM' not uptodate. Cannot merge.
*   ok 69: 11 (fail) - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case

* expecting failure: rm -f .git/index MM &&
     cp .orig-A/MM MM &&
     echo extra >>MM &&
     git update-index --add MM &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'MM' would be overwritten by merge. Cannot merge.
*   ok 70: 11 (fail) - must match and be up-to-date in O && A && B && O!=A && O!=B && A!=B case

* expecting success: rm -f .git/index SS &&
     cp .orig-A/SS SS &&
     git update-index --add SS &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 71: 12 - must match A in O && A && B && O!=A && A==B case

* expecting success: rm -f .git/index SS &&
     cp .orig-A/SS SS &&
     git update-index --add SS &&
     echo extra >>SS &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 72: 12 - must match A in O && A && B && O!=A && A==B case

* expecting failure: rm -f .git/index SS &&
     cp .orig-A/SS SS &&
     echo extra >>SS &&
     git update-index --add SS &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'SS' would be overwritten by merge. Cannot merge.
*   ok 73: 12 (fail) - must match A in O && A && B && O!=A && A==B case

* expecting success: rm -f .git/index MN &&
     cp .orig-A/MN MN &&
     git update-index --add MN &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 74: 13 - must match A in O && A && B && O!=A && O==B case

* expecting success: rm -f .git/index MN &&
     cp .orig-A/MN MN &&
     git update-index --add MN &&
     echo extra >>MN &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 75: 13 - must match A in O && A && B && O!=A && O==B case

* expecting success: rm -f .git/index NM &&
     cp .orig-A/NM NM &&
     git update-index --add NM &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 76: 14 - must match and be up-to-date in O && A && B && O==A && O!=B case

* expecting success: rm -f .git/index NM &&
     cp .orig-B/NM NM &&
     git update-index --add NM &&
     echo extra >>NM &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 77: 14 - may match B in O && A && B && O==A && O!=B case

* expecting failure: rm -f .git/index NM &&
     cp .orig-A/NM NM &&
     git update-index --add NM &&
     echo extra >>NM &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'NM' not uptodate. Cannot merge.
*   ok 78: 14 (fail) - must match and be up-to-date in O && A && B && O==A && O!=B case

* expecting failure: rm -f .git/index NM &&
     cp .orig-A/NM NM &&
     echo extra >>NM &&
     git update-index --add NM &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'NM' would be overwritten by merge. Cannot merge.
*   ok 79: 14 (fail) - must match and be up-to-date in O && A && B && O==A && O!=B case

* expecting success: rm -f .git/index NN &&
     cp .orig-A/NN NN &&
     git update-index --add NN &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 80: 15 - must match A in O && A && B && O==A && O==B case

* expecting success: rm -f .git/index NN &&
     cp .orig-A/NN NN &&
     git update-index --add NN &&
     echo extra >>NN &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226 &&
     check_result
*   ok 81: 15 - must match A in O && A && B && O==A && O==B case

* expecting failure: rm -f .git/index NN &&
     cp .orig-A/NN NN &&
     echo extra >>NN &&
     git update-index --add NN &&
     git read-tree -m 3fe085e0589de4327971d50e416fc292dd00fbfe 997bbc4a0a51e0574168a4f637739380edebe4d7 76d47d681d7f1d4fa975334a9a0ba8a6eeea2226
fatal: Entry 'NN' would be overwritten by merge. Cannot merge.
*   ok 82: 15 (fail) - must match A in O && A && B && O==A && O==B case

* expecting success: rm -f .git/index F16 &&
    echo F16 >F16 &&
    git update-index --add F16 &&
    tree0=`git write-tree` &&
    echo E16 >F16 &&
    git update-index F16 &&
    tree1=`git write-tree` &&
    git read-tree -m $tree0 $tree1 $tree1 $tree0 &&
    git ls-files --stage
read-tree: warning #16 detected
head   100644 ecbec6db011caa3ae26739812f092f76875fe6b6 1	F16
remote 100644 bcf4afda2c30299bf6538240d40bcb8fb3857691 1	F16
100644 ecbec6db011caa3ae26739812f092f76875fe6b6 2	F16
100644 bcf4afda2c30299bf6538240d40bcb8fb3857691 3	F16
*   ok 83: 16 - A matches in one and B matches in another.

* passed all 83 test(s)
*** t1001-read-tree-m-2way.sh ***
* expecting success: echo frotz >frotz &&
     echo nitfol >nitfol &&
     cat bozbar-old >bozbar &&
     echo rezrov >rezrov &&
     echo yomin >yomin &&
     git update-index --add nitfol bozbar rezrov &&
     treeH=`git write-tree` &&
     echo treeH $treeH &&
     git ls-tree $treeH &&

     cat bozbar-new >bozbar &&
     git update-index --add frotz bozbar --force-remove rezrov &&
     git ls-files --stage >M.out &&
     treeM=`git write-tree` &&
     echo treeM $treeM &&
     git ls-tree $treeM &&
     git diff-tree $treeH $treeM
treeH a84bea48d4a65941237a1b3f2ff9183c587868be
100644 blob ddecab218f1d9be94290870bd7feb2ca250eedc0	bozbar
100644 blob dca6b92303befc93086aa025d90a5facd7eb2812	nitfol
100644 blob 766498d93a4b06057a8e49d23f4068f1170ff38f	rezrov
treeM f1ddde56821fe484a99881139dd00299d1578a60
100644 blob b122a38d94a66f65ac8ec7438679fa782962300d	bozbar
100644 blob 8e4020bb5a8d8c873b25de15933e75cc0fc275df	frotz
100644 blob dca6b92303befc93086aa025d90a5facd7eb2812	nitfol
:100644 100644 ddecab218f1d9be94290870bd7feb2ca250eedc0 b122a38d94a66f65ac8ec7438679fa782962300d M	bozbar
:000000 100644 0000000000000000000000000000000000000000 8e4020bb5a8d8c873b25de15933e75cc0fc275df A	frotz
:100644 000000 766498d93a4b06057a8e49d23f4068f1170ff38f 0000000000000000000000000000000000000000 D	rezrov
*   ok 1: setup

* expecting success: rm -f .git/index &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >1-3.out &&
     git diff M.out 1-3.out &&
     check_cache_at bozbar dirty &&
     check_cache_at frotz dirty &&
     check_cache_at nitfol dirty
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0	nitfol
bozbar: dirty
frotz: dirty
nitfol: dirty
*   ok 2: 1, 2, 3 - no carry forward

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     git update-index --add yomin &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >4.out || return 1
     git diff M.out 4.out >4diff.out
     compare_change 4diff.out expected &&
     check_cache_at yomin clean
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0	nitfol
100644 0a41e115ab61be0328a19b29f18cdcb49338d516 0	yomin
yomin: clean
*   ok 3: 4 - carry forward local addition.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo yomin >yomin &&
     git update-index --add yomin &&
     echo yomin yomin >yomin &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >5.out || return 1
     git diff M.out 5.out >5diff.out
     compare_change 5diff.out expected &&
     check_cache_at yomin dirty
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0	nitfol
100644 0a41e115ab61be0328a19b29f18cdcb49338d516 0	yomin
yomin: dirty
*   ok 4: 5 - carry forward local addition.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     git update-index --add frotz &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >6.out &&
     git diff M.out 6.out &&
     check_cache_at frotz clean
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0	nitfol
frotz: clean
*   ok 5: 6 - local addition already has the same.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo frotz >frotz &&
     git update-index --add frotz &&
     echo frotz frotz >frotz &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >7.out &&
     git diff M.out 7.out &&
     check_cache_at frotz dirty
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0	nitfol
frotz: dirty
*   ok 6: 7 - local addition already has the same.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo frotz frotz >frotz &&
     git update-index --add frotz &&
     if read_tree_twoway $treeH $treeM; then false; else :; fi
fatal: Entry 'frotz' would be overwritten by merge. Cannot merge.
*   ok 7: 8 - conflicting addition.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo frotz frotz >frotz &&
     git update-index --add frotz &&
     echo frotz >frotz &&
     if read_tree_twoway $treeH $treeM; then false; else :; fi
fatal: Entry 'frotz' would be overwritten by merge. Cannot merge.
*   ok 8: 9 - conflicting addition.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo rezrov >rezrov &&
     git update-index --add rezrov &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >10.out &&
     git diff M.out 10.out
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0	nitfol
*   ok 9: 10 - path removed.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo rezrov >rezrov &&
     git update-index --add rezrov &&
     echo rezrov rezrov >rezrov &&
     if read_tree_twoway $treeH $treeM; then false; else :; fi
fatal: Entry 'rezrov' not uptodate. Cannot merge.
*   ok 10: 11 - dirty path removed.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo rezrov rezrov >rezrov &&
     git update-index --add rezrov &&
     if read_tree_twoway $treeH $treeM; then false; else :; fi
fatal: Entry 'rezrov' would be overwritten by merge. Cannot merge.
*   ok 11: 12 - unmatching local changes being removed.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo rezrov rezrov >rezrov &&
     git update-index --add rezrov &&
     echo rezrov >rezrov &&
     if read_tree_twoway $treeH $treeM; then false; else :; fi
fatal: Entry 'rezrov' would be overwritten by merge. Cannot merge.
*   ok 12: 13 - unmatching local changes being removed.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo nitfol nitfol >nitfol &&
     git update-index --add nitfol &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >14.out || return 1
     git diff M.out 14.out >14diff.out
     compare_change 14diff.out expected &&
     check_cache_at nitfol clean
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 7e1bf714fb103c778a21dd67411666901222425a 0	nitfol
nitfol: clean
*   ok 13: 14 - unchanged in two heads.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo nitfol nitfol >nitfol &&
     git update-index --add nitfol &&
     echo nitfol nitfol nitfol >nitfol &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >15.out || return 1
     git diff M.out 15.out >15diff.out
     compare_change 15diff.out expected &&
     check_cache_at nitfol dirty
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 7e1bf714fb103c778a21dd67411666901222425a 0	nitfol
nitfol: dirty
*   ok 14: 15 - unchanged in two heads.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo bozbar bozbar >bozbar &&
     git update-index --add bozbar &&
     if read_tree_twoway $treeH $treeM; then false; else :; fi
fatal: Entry 'bozbar' would be overwritten by merge. Cannot merge.
*   ok 15: 16 - conflicting local change.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     echo bozbar bozbar >bozbar &&
     git update-index --add bozbar &&
     echo bozbar bozbar bozbar >bozbar &&
     if read_tree_twoway $treeH $treeM; then false; else :; fi
fatal: Entry 'bozbar' would be overwritten by merge. Cannot merge.
*   ok 16: 17 - conflicting local change.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     cat bozbar-new >bozbar &&
     git update-index --add bozbar &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >18.out &&
     git diff M.out 18.out &&
     check_cache_at bozbar clean
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0	nitfol
bozbar: clean
*   ok 17: 18 - local change already having a good result.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     cat bozbar-new >bozbar &&
     git update-index --add bozbar &&
     echo gnusto gnusto >bozbar &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >19.out &&
     git diff M.out 19.out &&
     check_cache_at bozbar dirty
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0	nitfol
bozbar: dirty
*   ok 18: 19 - local change already having a good result, further modified.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     cat bozbar-old >bozbar &&
     git update-index --add bozbar &&
     read_tree_twoway $treeH $treeM &&
     git ls-files --stage >20.out &&
     git diff M.out 20.out &&
     check_cache_at bozbar dirty
100644 b122a38d94a66f65ac8ec7438679fa782962300d 0	bozbar
100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0	frotz
100644 dca6b92303befc93086aa025d90a5facd7eb2812 0	nitfol
bozbar: dirty
*   ok 19: 20 - no local change, use new tree.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     cat bozbar-old >bozbar &&
     git update-index --add bozbar &&
     echo gnusto gnusto >bozbar &&
     if read_tree_twoway $treeH $treeM; then false; else :; fi
fatal: Entry 'bozbar' not uptodate. Cannot merge.
*   ok 20: 21 - no local change, dirty cache.

* expecting success: rm -f .git/index &&
     git read-tree $treeH &&
     git checkout-index -u -f -q -a &&
     sed -e "s/such as/SUCH AS/" bozbar-old >bozbar &&
     git update-index --add bozbar &&
     if read_tree_twoway $treeH $treeM; then false; else :; fi
fatal: Entry 'bozbar' would be overwritten by merge. Cannot merge.
*   ok 21: 22 - local change cache updated.

* expecting success: rm -f .git/index &&
     echo DF >DF &&
     git update-index --add DF &&
     treeDF=`git write-tree` &&
     echo treeDF $treeDF &&
     git ls-tree $treeDF &&

     rm -f DF &&
     mkdir DF &&
     echo DF/DF >DF/DF &&
     git update-index --add --remove DF DF/DF &&
     treeDFDF=`git write-tree` &&
     echo treeDFDF $treeDFDF &&
     git ls-tree $treeDFDF &&
     git ls-files --stage >DFDF.out
treeDF 6bf22db9043f2b5821c019d0ce0f2605421affcb
100644 blob 052efc3abbc31348f7abd34535b1953d38273257	DF
treeDFDF c38e296263d024b0f48c4a728d293232ac6c5443
040000 tree 90bbead36f4d6a7c325fd450e6cfbcc7479d421a	DF
*   ok 22: DF vs DF/DF case setup.

* expecting success: rm -f .git/index &&
     rm -fr DF &&
     echo DF >DF &&
     git update-index --add DF &&
     read_tree_twoway $treeDF $treeDFDF &&
     git ls-files --stage >DFDFcheck.out &&
     git diff DFDF.out DFDFcheck.out &&
     check_cache_at DF/DF dirty &&
     :
100644 b90ea14b2dd74b6f377c10870b3757344bbe077c 0	DF/DF
DF/DF: dirty
*   ok 23: DF vs DF/DF case test.

* passed all 23 test(s)
*** t1002-read-tree-m-u-2way.sh ***
* expecting success: echo frotz >frotz &&
     echo nitfol >nitfol &&
     echo bozbar >bozbar &&
     echo rezrov >rezrov &&
     git update-index --add nitfol bozbar rezrov &&
     treeH=`git write-tree` &&
     echo treeH $treeH &&
     git ls-tree $treeH &&

     echo gnusto >bozbar &&
     git update-index --add frotz bozbar --force-remove rezrov &&
     git ls-files --stage >M.out &&
     treeM=`git write-tree` &&
     echo treeM $treeM &&
     git ls-tree $treeM &&
     sum bozbar frotz nitfol >M.sum &&
     git diff-tree $treeH $treeM
treeH 661afa9096b7e2d4b9a28a6e43736cd0b06d1308
100644 blob 78d812a2124ff980a1a70f8cca493698d643d242	bozbar
100644 blob dca6b92303befc93086aa025d90a5facd7eb2812	nitfol
100644 blob 766498d93a4b06057a8e49d23f4068f1170ff38f	rezrov
treeM 05bf9652e9b06473d6ca2f32ff60e2401e59bfa6
100644 blob bb3b2cd2e136e1e4e7ecdf10068e246196dd8294	bozbar
100644 blob 8e4020bb5a8d8c873b25de15933e75cc0fc275df	frotz
100644 blob dca6b92303befc93086aa025d90a5facd7eb2812	nitfol
:100644 100644 78d812a2124ff980a1a70f8cca493698d643d242 bb3b2cd2e136e1e4e7ecdf10068e246196dd8294 M	bozbar
:000000 100644 0000000000000000000000000000000000000000 8e4020bb5a8d8c873b25de15933e75cc0fc275df A	frotz
:100644 000000 766498d93a4b06057a8e49d23f4068f1170ff38f 0000000000000000000000000000000000000000 D	rezrov
*   ok 1: setup

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >1-3.out &&
     cmp M.out 1-3.out &&
     sum bozbar frotz nitfol >actual3.sum &&
     cmp M.sum actual3.sum &&
     check_cache_at bozbar clean &&
     check_cache_at frotz clean &&
     check_cache_at nitfol clean
bozbar: clean
frotz: clean
nitfol: clean
*   ok 2: 1, 2, 3 - no carry forward

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo "+100644 X 0	yomin" >expected &&
     echo yomin >yomin &&
     git update-index --add yomin &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >4.out || return 1
     diff -U0 M.out 4.out >4diff.out
     compare_change 4diff.out expected &&
     check_cache_at yomin clean &&
     sum bozbar frotz nitfol >actual4.sum &&
     cmp M.sum actual4.sum &&
     echo yomin >yomin1 &&
     diff yomin yomin1 &&
     rm -f yomin1
yomin: clean
*   ok 3: 4 - carry forward local addition.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     git read-tree -m -u $treeH &&
     echo yomin >yomin &&
     git update-index --add yomin &&
     echo yomin yomin >yomin &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >5.out || return 1
     diff -U0 M.out 5.out >5diff.out
     compare_change 5diff.out expected &&
     check_cache_at yomin dirty &&
     sum bozbar frotz nitfol >actual5.sum &&
     cmp M.sum actual5.sum &&
     : dirty index should have prevented -u from checking it out. &&
     echo yomin yomin >yomin1 &&
     diff yomin yomin1 &&
     rm -f yomin1
yomin: dirty
*   ok 4: 5 - carry forward local addition.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo frotz >frotz &&
     git update-index --add frotz &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >6.out &&
     diff -U0 M.out 6.out &&
     check_cache_at frotz clean &&
     sum bozbar frotz nitfol >actual3.sum &&
     cmp M.sum actual3.sum &&
     echo frotz >frotz1 &&
     diff frotz frotz1 &&
     rm -f frotz1
frotz: clean
*   ok 5: 6 - local addition already has the same.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo frotz >frotz &&
     git update-index --add frotz &&
     echo frotz frotz >frotz &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >7.out &&
     diff -U0 M.out 7.out &&
     check_cache_at frotz dirty &&
     sum bozbar frotz nitfol >actual7.sum &&
     if cmp M.sum actual7.sum; then false; else :; fi &&
     : dirty index should have prevented -u from checking it out. &&
     echo frotz frotz >frotz1 &&
     diff frotz frotz1 &&
     rm -f frotz1
frotz: dirty
M.sum actual7.sum differ: char 20, line 2
*   ok 6: 7 - local addition already has the same.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo frotz frotz >frotz &&
     git update-index --add frotz &&
     if git read-tree -m -u $treeH $treeM; then false; else :; fi
fatal: Entry 'frotz' would be overwritten by merge. Cannot merge.
*   ok 7: 8 - conflicting addition.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo frotz frotz >frotz &&
     git update-index --add frotz &&
     echo frotz >frotz &&
     if git read-tree -m -u $treeH $treeM; then false; else :; fi
fatal: Entry 'frotz' would be overwritten by merge. Cannot merge.
*   ok 8: 9 - conflicting addition.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo rezrov >rezrov &&
     git update-index --add rezrov &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >10.out &&
     cmp M.out 10.out &&
     sum bozbar frotz nitfol >actual10.sum &&
     cmp M.sum actual10.sum
*   ok 9: 10 - path removed.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo rezrov >rezrov &&
     git update-index --add rezrov &&
     echo rezrov rezrov >rezrov &&
     if git read-tree -m -u $treeH $treeM; then false; else :; fi
fatal: Entry 'rezrov' not uptodate. Cannot merge.
*   ok 10: 11 - dirty path removed.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo rezrov rezrov >rezrov &&
     git update-index --add rezrov &&
     if git read-tree -m -u $treeH $treeM; then false; else :; fi
fatal: Entry 'rezrov' would be overwritten by merge. Cannot merge.
*   ok 11: 12 - unmatching local changes being removed.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo rezrov rezrov >rezrov &&
     git update-index --add rezrov &&
     echo rezrov >rezrov &&
     if git read-tree -m -u $treeH $treeM; then false; else :; fi
fatal: Entry 'rezrov' would be overwritten by merge. Cannot merge.
*   ok 12: 13 - unmatching local changes being removed.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo nitfol nitfol >nitfol &&
     git update-index --add nitfol &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >14.out || return 1
     diff -U0 M.out 14.out >14diff.out
     compare_change 14diff.out expected &&
     sum bozbar frotz >actual14.sum &&
     grep -v nitfol M.sum > expected14.sum &&
     cmp expected14.sum actual14.sum &&
     sum bozbar frotz nitfol >actual14a.sum &&
     if cmp M.sum actual14a.sum; then false; else :; fi &&
     check_cache_at nitfol clean &&
     echo nitfol nitfol >nitfol1 &&
     diff nitfol nitfol1 &&
     rm -f nitfol1
M.sum actual14a.sum differ: char 38, line 3
nitfol: clean
*   ok 13: 14 - unchanged in two heads.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo nitfol nitfol >nitfol &&
     git update-index --add nitfol &&
     echo nitfol nitfol nitfol >nitfol &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >15.out || return 1
     diff -U0 M.out 15.out >15diff.out
     compare_change 15diff.out expected &&
     check_cache_at nitfol dirty &&
     sum bozbar frotz >actual15.sum &&
     grep -v nitfol M.sum > expected15.sum &&
     cmp expected15.sum actual15.sum &&
     sum bozbar frotz nitfol >actual15a.sum &&
     if cmp M.sum actual15a.sum; then false; else :; fi &&
     echo nitfol nitfol nitfol >nitfol1 &&
     diff nitfol nitfol1 &&
     rm -f nitfol1
nitfol: dirty
M.sum actual15a.sum differ: char 38, line 3
*   ok 14: 15 - unchanged in two heads.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo bozbar bozbar >bozbar &&
     git update-index --add bozbar &&
     if git read-tree -m -u $treeH $treeM; then false; else :; fi
fatal: Entry 'bozbar' would be overwritten by merge. Cannot merge.
*   ok 15: 16 - conflicting local change.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo bozbar bozbar >bozbar &&
     git update-index --add bozbar &&
     echo bozbar bozbar bozbar >bozbar &&
     if git read-tree -m -u $treeH $treeM; then false; else :; fi
fatal: Entry 'bozbar' would be overwritten by merge. Cannot merge.
*   ok 16: 17 - conflicting local change.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo gnusto >bozbar &&
     git update-index --add bozbar &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >18.out &&
     diff -U0 M.out 18.out &&
     check_cache_at bozbar clean &&
     sum bozbar frotz nitfol >actual18.sum &&
     cmp M.sum actual18.sum
bozbar: clean
*   ok 17: 18 - local change already having a good result.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo gnusto >bozbar &&
     git update-index --add bozbar &&
     echo gnusto gnusto >bozbar &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >19.out &&
     diff -U0 M.out 19.out &&
     check_cache_at bozbar dirty &&
     sum frotz nitfol >actual19.sum &&
     grep -v bozbar  M.sum > expected19.sum &&
     cmp expected19.sum actual19.sum &&
     sum bozbar frotz nitfol >actual19a.sum &&
     if cmp M.sum actual19a.sum; then false; else :; fi &&
     echo gnusto gnusto >bozbar1 &&
     diff bozbar bozbar1 &&
     rm -f bozbar1
bozbar: dirty
M.sum actual19a.sum differ: char 1, line 1
*   ok 18: 19 - local change already having a good result, further modified.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo bozbar >bozbar &&
     git update-index --add bozbar &&
     git read-tree -m -u $treeH $treeM &&
     git ls-files --stage >20.out &&
     diff -U0 M.out 20.out &&
     check_cache_at bozbar clean &&
     sum bozbar frotz nitfol >actual20.sum &&
     cmp M.sum actual20.sum
bozbar: clean
*   ok 19: 20 - no local change, use new tree.

* expecting success: rm -f .git/index nitfol bozbar rezrov frotz &&
     git read-tree --reset -u $treeH &&
     echo bozbar >bozbar &&
     git update-index --add bozbar &&
     echo gnusto gnusto >bozbar &&
     if git read-tree -m -u $treeH $treeM; then false; else :; fi
fatal: Entry 'bozbar' not uptodate. Cannot merge.
*   ok 20: 21 - no local change, dirty cache.

* expecting success: rm -f .git/index
     echo DF >DF &&
     git update-index --add DF &&
     treeDF=`git write-tree` &&
     echo treeDF $treeDF &&
     git ls-tree $treeDF &&

     rm -f DF &&
     mkdir DF &&
     echo DF/DF >DF/DF &&
     git update-index --add --remove DF DF/DF &&
     treeDFDF=`git write-tree` &&
     echo treeDFDF $treeDFDF &&
     git ls-tree $treeDFDF &&
     git ls-files --stage >DFDF.out
treeDF 6bf22db9043f2b5821c019d0ce0f2605421affcb
100644 blob 052efc3abbc31348f7abd34535b1953d38273257	DF
treeDFDF c38e296263d024b0f48c4a728d293232ac6c5443
040000 tree 90bbead36f4d6a7c325fd450e6cfbcc7479d421a	DF
*   ok 21: DF vs DF/DF case setup.

* expecting success: rm -f .git/index &&
     rm -fr DF &&
     echo DF >DF &&
     git update-index --add DF &&
     git read-tree -m -u $treeDF $treeDFDF &&
     git ls-files --stage >DFDFcheck.out &&
     diff -U0 DFDF.out DFDFcheck.out &&
     check_cache_at DF/DF clean
DF/DF: clean
*   ok 22: DF vs DF/DF case test.

* passed all 22 test(s)
*** t1003-read-tree-prefix.sh ***
* expecting success: 
	echo hello >one &&
	git update-index --add one &&
	tree=`git write-tree` &&
	echo tree is $tree

tree is 700196ec4e5b1c75e9f5481e5b545d78533ff917
*   ok 1: setup

* expecting success: 
	git read-tree --prefix=two/ $tree &&
	git ls-files >actual &&
	cmp expect actual

*   ok 2: read-tree --prefix

* passed all 2 test(s)
*** t1004-read-tree-m-u-wf.sh ***
* expecting success: 

	mkdir subdir &&
	echo >file1 file one &&
	echo >file2 file two &&
	echo >subdir/file1 file one in subdirectory &&
	echo >subdir/file2 file two in subdirectory &&
	git update-index --add file1 file2 subdir/file1 subdir/file2 &&
	git commit -m initial &&

	git branch side &&
	git tag -f branch-point &&

	echo file2 is not tracked on the master anymore &&
	rm -f file2 subdir/file2 &&
	git update-index --remove file2 subdir/file2 &&
	git commit -a -m "master removes file2 and subdir/file2"

Created initial commit c72de13: initial
 4 files changed, 4 insertions(+), 0 deletions(-)
 create mode 100644 file1
 create mode 100644 file2
 create mode 100644 subdir/file1
 create mode 100644 subdir/file2
file2 is not tracked on the master anymore
Created commit 8024290: master removes file2 and subdir/file2
 2 files changed, 0 insertions(+), 2 deletions(-)
 delete mode 100644 file2
 delete mode 100644 subdir/file2
*   ok 1: two-way setup

* expecting success: 

	echo >file2 master creates untracked file2 &&
	echo >subdir/file2 master creates untracked subdir/file2 &&
	if err=`git read-tree -m -u master side 2>&1`
	then
		echo should have complained
		false
	else
		echo "happy to see $err"
	fi

happy to see fatal: Untracked working tree file 'file2' would be overwritten by merge.
*   ok 2: two-way not clobbering

* expecting success: 

	if err=`git read-tree -m --exclude-per-directory=.gitignore master side 2>&1`
	then
		echo should have complained
		false
	else
		echo "happy to see $err"
	fi

happy to see fatal: --exclude-per-directory is meaningless unless -u
*   ok 3: two-way with incorrect --exclude-per-directory (1)

* expecting success: 

	if err=`git read-tree -m -u --exclude-per-directory=foo --exclude-per-directory=.gitignore master side 2>&1`
	then
		echo should have complained
		false
	else
		echo "happy to see $err"
	fi

happy to see fatal: more than one --exclude-per-directory are given.
*   ok 4: two-way with incorrect --exclude-per-directory (2)

* expecting success: 

	git read-tree -m -u --exclude-per-directory=.gitignore master side

*   ok 5: two-way clobbering a ignored file

* expecting success: 

	rm -f file2 subdir/file2 &&
	git checkout side &&
	echo >file3 file three &&
	echo >subdir/file3 file three &&
	git update-index --add file3 subdir/file3 &&
	git commit -a -m "side adds file3 and removes file2" &&

	git checkout master &&
	echo >file2 file two is untracked on the master side &&
	echo >subdir/file2 file two is untracked on the master side &&

	git read-tree -m -u branch-point master side

D	file2
D	subdir/file2
Switched to branch "side"
Created commit afd1ac8: side adds file3 and removes file2
 4 files changed, 2 insertions(+), 2 deletions(-)
 delete mode 100644 file2
 create mode 100644 file3
 delete mode 100644 subdir/file2
 create mode 100644 subdir/file3
Switched to branch "master"
*   ok 6: three-way not complaining on an untracked path in both

* expecting success: 

	git reset --hard &&
	rm -f file2 subdir/file2 file3 subdir/file3 &&
	git checkout master &&
	echo >file3 file three created in master, untracked &&
	echo >subdir/file3 file three created in master, untracked &&
	if err=`git read-tree -m -u branch-point master side 2>&1`
	then
		echo should have complained
		false
	else
		echo "happy to see $err"
	fi

HEAD is now at 8024290... master removes file2 and subdir/file2
Already on branch "master"
happy to see fatal: Untracked working tree file 'file3' would be overwritten by merge.
*   ok 7: three-way not clobbering a working tree file

* expecting success: 

	git reset --hard &&
	rm -f file2 subdir/file2 file3 subdir/file3 &&
	git checkout master &&
	echo >file3 file three created in master, untracked &&
	echo >subdir/file3 file three created in master, untracked &&

	git read-tree -m -u --exclude-per-directory=.gitignore branch-point master side

HEAD is now at 8024290... master removes file2 and subdir/file2
Already on branch "master"
*   ok 8: three-way not complaining on an untracked file

* passed all 8 test(s)
*** t1020-subdirectory.sh ***
* expecting success: 
	long="a b c d e f g h i j k l m n o p q r s t u v w x y z" &&
	for c in $long; do echo $c; done >one &&
	mkdir dir &&
	for c in x y z $long a b c; do echo $c; done >dir/two &&
	cp one original.one &&
	cp dir/two original.two

*   ok 1: setup

* expecting success: 
	cd $HERE &&
	git update-index --add one &&
	case "`git ls-files`" in
	one) echo ok one ;;
	*) echo bad one; exit 1 ;;
	esac &&
	cd dir &&
	git update-index --add two &&
	case "`git ls-files`" in
	two) echo ok two ;;
	*) echo bad two; exit 1 ;;
	esac &&
	cd .. &&
	case "`git ls-files`" in
	dir/two"$LF"one) echo ok both ;;
	*) echo bad; exit 1 ;;
	esac

ok one
ok two
ok both
*   ok 2: update-index and ls-files

* expecting success: 
	cd $HERE &&
	two=`git ls-files -s dir/two` &&
	two=`expr "$two" : "[0-7]* \([0-9a-f]*\)"` &&
	echo "$two" &&
	git cat-file -p "$two" >actual &&
	cmp dir/two actual &&
	cd dir &&
	git cat-file -p "$two" >actual &&
	cmp two actual

c1144d0671912dd26751c1fbf1eac57a907f82c7
*   ok 3: cat-file

* expecting success: 
	cd $HERE &&
	echo a >>one &&
	echo d >>dir/two &&
	case "`git diff-files --name-only`" in
	dir/two"$LF"one) echo ok top ;;
	*) echo bad top; exit 1 ;;
	esac &&
	# diff should not omit leading paths
	cd dir &&
	case "`git diff-files --name-only`" in
	dir/two"$LF"one) echo ok subdir ;;
	*) echo bad subdir; exit 1 ;;
	esac &&
	case "`git diff-files --name-only .`" in
	dir/two) echo ok subdir limited ;;
	*) echo bad subdir limited; exit 1 ;;
	esac

ok top
ok subdir
ok subdir limited
*   ok 4: diff-files

* expecting success: 
	cd $HERE &&
	top=`git write-tree` &&
	echo $top &&
	cd dir &&
	sub=`git write-tree` &&
	echo $sub &&
	test "z$top" = "z$sub"

cf1e35b43464cccd320d58a813e14e25fa36b1d7
cf1e35b43464cccd320d58a813e14e25fa36b1d7
*   ok 5: write-tree

* expecting success: 
	cd $HERE &&
	git checkout-index -f -u one &&
	cmp one original.one &&
	cd dir &&
	git checkout-index -f -u two &&
	cmp two ../original.two

*   ok 6: checkout-index

* expecting success: 
	cd $HERE &&
	rm -f one dir/two &&
	tree=`git write-tree` &&
	git read-tree --reset -u "$tree" &&
	cmp one original.one &&
	cmp dir/two original.two &&
	cd dir &&
	rm -f two &&
	git read-tree --reset -u "$tree" &&
	cmp two ../original.two &&
	cmp ../one ../original.one

*   ok 7: read-tree

* expecting success: 
	cd $HERE &&
	git commit -a -m 1 &&
	cd $HERE/.git &&
	git show -s HEAD

Created initial commit 7c904a4: 1
 2 files changed, 58 insertions(+), 0 deletions(-)
 create mode 100644 dir/two
 create mode 100644 one
commit 7c904a4a5677537d34a42f0dde3d52509e7e8212
Author: A U Thor <author at example.com>
Date:   Sat Jul 5 15:24:13 2008 +0000

    1
*   ok 8: no file/rev ambiguity check inside .git

* expecting success: 
	cd $HERE &&
	git clone -s --bare .git foo.git &&
	cd foo.git && GIT_DIR=. git show -s HEAD

Initialized empty Git repository in /build/buildd/git-core-1.5.4.3/t/trash/foo.git/
commit 7c904a4a5677537d34a42f0dde3d52509e7e8212
Author: A U Thor <author at example.com>
Date:   Sat Jul 5 15:24:13 2008 +0000

    1
*   ok 9: no file/rev ambiguity check inside a bare repo

* expecting success: 
	cd $HERE &&
	rm -fr foo.git &&
	git clone -s .git another &&
	ln -s another yetanother &&
	cd yetanother/.git &&
	git show -s HEAD

Initialized empty Git repository in /build/buildd/git-core-1.5.4.3/t/trash/another/.git/
commit 7c904a4a5677537d34a42f0dde3d52509e7e8212
Author: A U Thor <author at example.com>
Date:   Sat Jul 5 15:24:13 2008 +0000

    1
*   ok 10: detection should not be fooled by a symlink

* passed all 10 test(s)
*** t1100-commit-tree-options.sh ***
* expecting success: git write-tree >treeid
*   ok 1: test preparation: write empty tree

* expecting success: echo comment text |
     GIT_AUTHOR_NAME="Author Name" \
     GIT_AUTHOR_EMAIL="author at email" \
     GIT_AUTHOR_DATE="2005-05-26 23:00" \
     GIT_COMMITTER_NAME="Committer Name" \
     GIT_COMMITTER_EMAIL="committer at email" \
     GIT_COMMITTER_DATE="2005-05-26 23:30" \
     TZ=GMT git commit-tree `cat treeid` >commitid 2>/dev/null
*   ok 2: construct commit

* expecting success: git cat-file commit `cat commitid` >commit
*   ok 3: read commit

* expecting success: diff expected commit
*   ok 4: compare commit

* passed all 4 test(s)
*** t1200-tutorial.sh ***
* expecting success: test blob = "blob"
*   ok 1: blob

* expecting success: test "Hello World" = "Hello World"
*   ok 2: blob 557db03

* expecting success: cmp diff.expect diff.output
*   ok 3: git diff-files -p

* expecting success: cmp diff.expect diff.output
*   ok 4: git diff

* expecting success: test 8988da15d077d4829fc51d8544c097def6644dbb = 8988da15d077d4829fc51d8544c097def6644dbb
*   ok 5: tree

* expecting success: cmp diff.expect diff.output
*   ok 6: git diff-index -p HEAD

* expecting success: cmp diff.expect diff.output
*   ok 7: git diff HEAD

* expecting success: cmp whatchanged.expect whatchanged.output
*   ok 8: git whatchanged -p --root

* expecting success: cmp .git/refs/heads/master .git/refs/tags/my-first-tag
*   ok 9: git tag my-first-tag

M	hello
Switched to a new branch "mybranch"
* expecting success: cmp .git/refs/heads/master .git/refs/heads/mybranch
*   ok 10: git checkout -b mybranch

* expecting success: cmp branch.expect branch.output
*   ok 11: git branch

M	hello
Already on branch "mybranch"
Created commit 69b6e54: Some work.
 1 files changed, 2 insertions(+), 0 deletions(-)
Switched to branch "master"
Created commit 81bab04: Some fun.
 2 files changed, 2 insertions(+), 0 deletions(-)
* expecting failure: 
	git merge -m "Merge work in mybranch" mybranch

Merging HEAD with mybranch
Merging:
81bab04 Some fun.
69b6e54 Some work.
found 1 common ancestor(s):
fdafd9d Initial commit
Auto-merged hello
CONFLICT (content): Merge conflict in hello
Automatic merge failed; fix conflicts and then commit the result.
*   ok 12: git resolve now fails

Created commit 77fb62e: Merged "mybranch" changes.
* passed all 12 test(s)
*** t1300-repo-config.sh ***
* expecting success: cmp .git/config expect
*   ok 1: initial

* expecting success: cmp .git/config expect
*   ok 2: mixed case

* expecting success: cmp .git/config expect
*   ok 3: similar section

* expecting success: cmp .git/config expect
*   ok 4: similar section

* expecting success: git config core.penguin kingpin !blue
*   ok 5: replace with non-match

* expecting success: git config core.penguin "very blue" !kingpin
*   ok 6: replace with non-match (actually matching)

* expecting success: cmp .git/config expect
*   ok 7: non-match result

* expecting success: git config --unset beta.baz
*   ok 8: unset with cont. lines

* expecting success: cmp .git/config expect
*   ok 9: unset with cont. lines is correct

* expecting success: git config --unset-all beta.haha
*   ok 10: multiple unset

* expecting success: cmp .git/config expect
*   ok 11: multiple unset is correct

* expecting success: git config --replace-all beta.haha gamma
*   ok 12: --replace-all

* expecting success: cmp .git/config expect
*   ok 13: all replaced

* expecting success: cmp .git/config expect
*   ok 14: really mean test

* expecting success: cmp .git/config expect
*   ok 15: really really mean test

* expecting success: test alpha = $(git config beta.haha)
*   ok 16: get value

* expecting success: cmp .git/config expect
*   ok 17: unset

* expecting success: cmp .git/config expect
*   ok 18: multivar

* expecting success: git config --get nextsection.nonewline !for
wow
*   ok 19: non-match

* expecting success: test wow = $(git config --get nextsection.nonewline !for)
*   ok 20: non-match value

* expecting failure: git config --get nextsection.nonewline
error: More than one value for the key nextsection.nonewline: wow2 for me
wow
*   ok 21: ambiguous get

* expecting success: git config --get-all nextsection.nonewline
wow
wow2 for me
*   ok 22: get multivar

* expecting success: cmp .git/config expect
*   ok 23: multivar replace

* expecting failure: git config nextsection.nonewline
error: More than one value for the key nextsection.nonewline: wow2 for me
wow3
*   ok 24: ambiguous value

* expecting failure: git config --unset nextsection.nonewline
Warning: nextsection.nonewline has multiple values
*   ok 25: ambiguous unset

* expecting failure: git config --unset somesection.nonewline
*   ok 26: invalid unset

* expecting success: cmp .git/config expect
*   ok 27: multivar unset

* expecting failure: git config inval.2key blabla
invalid key: inval.2key
*   ok 28: invalid key

* expecting success: git config 123456.a123 987
*   ok 29: correct key

* expecting success: git config Version.1.2.3eX.Alpha beta
*   ok 30: hierarchical section

* expecting success: cmp .git/config expect
*   ok 31: hierarchical section value

* expecting success: git config --list > output && cmp output expect
*   ok 32: working --list

* expecting success: git config --get-regexp in > output && cmp output expect
*   ok 33: --get-regexp

* expecting success: git config --get-all nextsection.nonewline > output && cmp output expect
*   ok 34: --add

* expecting success: git config --get novalue.variable ^$

*   ok 35: get variable with no value

* expecting success: git config --get emptyvalue.variable ^$

*   ok 36: get variable with empty value

* expecting success: git config --get-regexp novalue > output &&
	 cmp output expect
*   ok 37: get-regexp variable with no value

* expecting success: git config --get-regexp emptyvalue > output &&
	 cmp output expect
*   ok 38: get-regexp variable with empty value

* expecting success: git config --bool novalue.variable > output &&
	 cmp output expect
*   ok 39: get bool variable with no value

* expecting success: git config --bool emptyvalue.variable > output &&
	 cmp output expect
*   ok 40: get bool variable with empty value

* expecting success: test 129 = 129 && grep usage output
usage: git-config [ --global | --system | [ -f | --file ] config-file ] [ --bool | --int ] [ -z | --null ] [--get | --get-all | --get-regexp | --replace-all | --add | --unset | --unset-all] name [value [value_regex]] | --rename-section old_name new_name | --remove-section name | --list | --get-color var [default] | --get-colorbool name [stdout-is-tty]
*   ok 41: no arguments, but no crash

* expecting success: cmp .git/config expect
*   ok 42: new section is partial match of another

* expecting success: cmp .git/config expect
*   ok 43: new variable inserts into proper section

* expecting success: git config --file non-existing-config -l; test $? != 0
fatal: unable to read config file non-existing-config: No such file or directory
*   ok 44: alternative GIT_CONFIG (non-existing file should fail)

* expecting success: cmp output expect
*   ok 45: alternative GIT_CONFIG

* expecting success: git config --file other-config -l > output && cmp output expect
*   ok 46: alternative GIT_CONFIG (--file)

* expecting success: cmp other-config expect
*   ok 47: --set in alternative GIT_CONFIG

* expecting success: git config --rename-section branch.eins branch.zwei
*   ok 48: rename section

* expecting success: git diff expect .git/config
*   ok 49: rename succeeded

* expecting failure: git config --rename-section branch."world domination" branch.drei
No such section!
*   ok 50: rename non-existing section

* expecting success: git diff expect .git/config
*   ok 51: rename succeeded

* expecting success: git config --rename-section branch."1 234 blabl/a" branch.drei
*   ok 52: rename another section

* expecting success: git diff expect .git/config
*   ok 53: rename succeeded

* expecting success: git config --remove-section branch.zwei
*   ok 54: remove section

* expecting success: git diff -u expect .git/config
*   ok 55: section was removed properly

* expecting success: 

	git config gitcvs.enabled true &&
	git config gitcvs.ext.dbname %Ggitcvs1.%a.%m.sqlite &&
	git config gitcvs.dbname %Ggitcvs2.%a.%m.sqlite &&
	cmp .git/config expect


*   ok 56: section ending

* expecting success: 

	git config kilo.gram 1k &&
	git config mega.ton 1m &&
	k=$(git config --int --get kilo.gram) &&
	test z1024 = "z$k" &&
	m=$(git config --int --get mega.ton) &&
	test z1048576 = "z$m"

*   ok 57: numbers

* expecting success: 

	git config aninvalid.unit "1auto" &&
	s=$(git config aninvalid.unit) &&
	test "z1auto" = "z$s" &&
	if git config --int --get aninvalid.unit 2>actual
	then
		echo config should have failed
		false
	fi &&
	cmp actual expect

*   ok 58: invalid unit

* expecting success: 

	git config bool.true1 01 &&
	git config bool.true2 -1 &&
	git config bool.true3 YeS &&
	git config bool.true4 true &&
	git config bool.false1 000 &&
	git config bool.false2 "" &&
	git config bool.false3 nO &&
	git config bool.false4 FALSE &&
	rm -f result &&
	for i in 1 2 3 4
	do
	    git config --bool --get bool.true$i >>result
	    git config --bool --get bool.false$i >>result
        done &&
	cmp expect result
*   ok 59: bool

* expecting failure: 

	git config bool.nobool foobar &&
	git config --bool --get bool.nobool
fatal: bad config value for 'bool.nobool' in .git/config
*   ok 60: invalid bool (--get)

* expecting failure: 

	git config --bool bool.nobool foobar
fatal: bad config value for 'bool.nobool' in (null)
*   ok 61: invalid bool (set)

* expecting success: 

	git config --bool bool.true1 01 &&
	git config --bool bool.true2 -1 &&
	git config --bool bool.true3 YeS &&
	git config --bool bool.true4 true &&
	git config --bool bool.false1 000 &&
	git config --bool bool.false2 "" &&
	git config --bool bool.false3 nO &&
	git config --bool bool.false4 FALSE &&
	cmp expect .git/config
*   ok 62: set --bool

* expecting success: 

	git config --int int.val1 01 &&
	git config --int int.val2 -1 &&
	git config --int int.val3 5m &&
	cmp expect .git/config
*   ok 63: set --int

* expecting success: cmp .git/config expect
*   ok 64: quoting

* expecting failure: git config key.with\\
newline 123
invalid key: key.with\newline
*   ok 65: key with newline

* expecting success: git config key.sub value.with\\
newline
*   ok 66: value with newline

* expecting success: cmp result expect
*   ok 67: value continued on next line

* expecting success: cmp result expect
*   ok 68: --null --list

* expecting success: cmp result expect
*   ok 69: --null --get-regexp

* expecting success: 

	ln -s notyet myconfig &&
	GIT_CONFIG=myconfig git config test.frotz nitfol &&
	test -h myconfig &&
	test -f notyet &&
	test "z$(GIT_CONFIG=notyet git config test.frotz)" = znitfol &&
	GIT_CONFIG=myconfig git config test.xyzzy rezrov &&
	test -h myconfig &&
	test -f notyet &&
	test "z$(GIT_CONFIG=notyet git config test.frotz)" = znitfol &&
	test "z$(GIT_CONFIG=notyet git config test.xyzzy)" = zrezrov


*   ok 70: symlinked configuration

* passed all 70 test(s)
*** t1301-shared-repo.sh ***
* expecting success: 
	mkdir sub &&
	cd sub &&
	git init --shared=all &&
	test 2 = $(git config core.sharedrepository)

Initialized empty shared Git repository in .git/
*   ok 1: shared=all

* expecting success: 
	: > a1 &&
	git add a1 &&
	test_tick &&
	git commit -m a1 &&
	umask 0277 &&
	git update-server-info &&
	actual="$(ls -l .git/info/refs)" &&
	case "$actual" in
	-r--r--r--*)
		: happy
		;;
	*)
		echo Oops, .git/info/refs is not 0444
		false
		;;
	esac

Created initial commit a2bd363: a1
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 a1
*   ok 2: update-server-info honors core.sharedRepository

* passed all 2 test(s)
*** t1302-repo-version.sh ***
* expecting success: 
	(test "$(git config core.repositoryformatversion)" = 0 &&
	cd test &&
	test "$(git config core.repositoryformatversion)" = 0)
*   ok 1: gitdir selection on normal repos

* expecting success: 
	(cd test2 &&
	test "$(git config core.repositoryformatversion)" = 99)
warning: Expected git repo version <= 0, found 99
warning: Please upgrade Git
*   ok 2: gitdir selection on unsupported repo

* expecting success: 
	(git apply --stat test.patch &&
	cd test && git apply --stat ../test.patch &&
	cd ../test2 && git apply --stat ../test.patch)
 test.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
 test.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
warning: Expected git repo version <= 0, found 99
warning: Please upgrade Git
 test.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
*   ok 3: gitdir not required mode

* expecting success: 
	(git apply --check --index test.patch &&
	cd test && git apply --check --index ../test.patch)
*   ok 4: gitdir required mode on normal repos

* expecting failure: 
	(cd test2 && git apply --check --index ../test.patch)
warning: Expected git repo version <= 0, found 99
warning: Please upgrade Git
fatal: --index outside a repository
*   ok 5: gitdir required mode on unsupported repo

* passed all 5 test(s)
*** t1303-wacky-config.sh ***
* expecting success: 
	setup &&
	git config section.key bar &&
	check section.key bar

*   ok 1: modify same key

* expecting success: 
	setup &&
	git config section.other bar &&
	check section.key foo &&
	check section.other bar

*   ok 2: add key in same section

* expecting success: 
	setup &&
	git config section2.key bar &&
	check section.key foo &&
	check section2.key bar

*   ok 3: add key in different section

* passed all 3 test(s)
*** t1400-update-ref.sh ***
* expecting success: 

	for name in A B C D E F
	do
		test_tick &&
		T=$(git write-tree) &&
		sha1=$(echo $name | git commit-tree $T) &&
		eval $name=$sha1
	done


*   ok 1: setup

* expecting success: git update-ref refs/heads/master 102939797ab91a4f201d131418d2c9d919dcdd2c &&
	 test 102939797ab91a4f201d131418d2c9d919dcdd2c = $(cat .git/refs/heads/master)
*   ok 2: create refs/heads/master

* expecting success: git update-ref refs/heads/master 56d5c1374e8028a1e122ab046ab7b98165342dc4 102939797ab91a4f201d131418d2c9d919dcdd2c &&
	 test 56d5c1374e8028a1e122ab046ab7b98165342dc4 = $(cat .git/refs/heads/master)
*   ok 3: create refs/heads/master

* expecting success: touch .git/refs/heads/gu
	 git update-ref refs/heads/gu/fixes 102939797ab91a4f201d131418d2c9d919dcdd2c >out 2>err
	 test $? != 0
*   ok 4: fail to create refs/heads/gu/fixes

* expecting success: git update-ref HEAD 102939797ab91a4f201d131418d2c9d919dcdd2c &&
	 test 102939797ab91a4f201d131418d2c9d919dcdd2c = $(cat .git/refs/heads/master)
*   ok 5: create refs/heads/master (by HEAD)

* expecting success: git update-ref HEAD 56d5c1374e8028a1e122ab046ab7b98165342dc4 102939797ab91a4f201d131418d2c9d919dcdd2c &&
	 test 56d5c1374e8028a1e122ab046ab7b98165342dc4 = $(cat .git/refs/heads/master)
*   ok 6: create refs/heads/master (by HEAD)

* expecting failure: git update-ref HEAD 102939797ab91a4f201d131418d2c9d919dcdd2c 56d5c1374e8028a1e122ab046ab7b98165342dc4
error: unable to resolve reference HEAD: No such file or directory
fatal: Cannot lock the ref 'HEAD'.
*   ok 7: (not) create HEAD with old sha1

* expecting failure: test -f .git/refs/heads/master
*   ok 8: (not) prior created .git/refs/heads/master

* expecting success: git update-ref HEAD 102939797ab91a4f201d131418d2c9d919dcdd2c
*   ok 9: create HEAD

* expecting failure: git update-ref HEAD 56d5c1374e8028a1e122ab046ab7b98165342dc4 0000000000000000000000000000000000000000
error: Ref refs/heads/master is at 102939797ab91a4f201d131418d2c9d919dcdd2c but expected 0000000000000000000000000000000000000000
fatal: Cannot lock the ref 'HEAD'.
*   ok 10: (not) change HEAD with wrong SHA1

* expecting failure: test 56d5c1374e8028a1e122ab046ab7b98165342dc4 = $(cat .git/refs/heads/master)
*   ok 11: (not) changed .git/refs/heads/master

* expecting success: GIT_COMMITTER_DATE="2005-05-26 23:30" \
	 git update-ref HEAD 102939797ab91a4f201d131418d2c9d919dcdd2c -m "Initial Creation" &&
	 test 102939797ab91a4f201d131418d2c9d919dcdd2c = $(cat .git/refs/heads/master)
*   ok 12: create refs/heads/master (logged by touch)

* expecting success: GIT_COMMITTER_DATE="2005-05-26 23:31" \
	 git update-ref HEAD 56d5c1374e8028a1e122ab046ab7b98165342dc4 102939797ab91a4f201d131418d2c9d919dcdd2c -m "Switch" &&
	 test 56d5c1374e8028a1e122ab046ab7b98165342dc4 = $(cat .git/refs/heads/master)
*   ok 13: update refs/heads/master (logged by touch)

* expecting success: GIT_COMMITTER_DATE="2005-05-26 23:41" \
	 git update-ref HEAD 102939797ab91a4f201d131418d2c9d919dcdd2c &&
	 test 102939797ab91a4f201d131418d2c9d919dcdd2c = $(cat .git/refs/heads/master)
*   ok 14: set refs/heads/master (logged by touch)

* expecting success: diff expect .git/logs/refs/heads/master
*   ok 15: verifying refs/heads/master's log

* expecting success: git config core.logAllRefUpdates true &&
	 test true = $(git config --bool --get core.logAllRefUpdates)
*   ok 16: enable core.logAllRefUpdates

* expecting success: GIT_COMMITTER_DATE="2005-05-26 23:32" \
	 git update-ref HEAD 102939797ab91a4f201d131418d2c9d919dcdd2c -m "Initial Creation" &&
	 test 102939797ab91a4f201d131418d2c9d919dcdd2c = $(cat .git/refs/heads/master)
*   ok 17: create refs/heads/master (logged by config)

* expecting success: GIT_COMMITTER_DATE="2005-05-26 23:33" \
	 git update-ref HEAD 56d5c1374e8028a1e122ab046ab7b98165342dc4 102939797ab91a4f201d131418d2c9d919dcdd2c -m "Switch" &&
	 test 56d5c1374e8028a1e122ab046ab7b98165342dc4 = $(cat .git/refs/heads/master)
*   ok 18: update refs/heads/master (logged by config)

* expecting success: GIT_COMMITTER_DATE="2005-05-26 23:43" \
	 git update-ref HEAD 102939797ab91a4f201d131418d2c9d919dcdd2c &&
	 test 102939797ab91a4f201d131418d2c9d919dcdd2c = $(cat .git/refs/heads/master)
*   ok 19: set refs/heads/master (logged by config)

* expecting success: diff expect .git/logs/$m
*   ok 20: verifying refs/heads/master's log

* expecting success: rm -f o e
	 git rev-parse --verify "master@{May 25 2005}" >o 2>e &&
	 test 3cceb89b690679aecbe1db39079f99221f1aaaa6 = $(cat o) &&
	 test "warning: Log for 'master' only goes back to $ed." = "$(cat e)"
*   ok 21: Query "master@{May 25 2005}" (before history)

* expecting success: rm -f o e
	 git rev-parse --verify master@{2005-05-25} >o 2>e &&
	 test 3cceb89b690679aecbe1db39079f99221f1aaaa6 = $(cat o) &&
	 echo test "warning: Log for 'master' only goes back to $ed." = "$(cat e)"
test warning: Log for 'master' only goes back to Thu, 26 May 2005 18:32:00 -0500. = warning: Log for 'master' only goes back to Thu, 26 May 2005 18:32:00 -0500.
*   ok 22: Query master@{2005-05-25} (before history)

* expecting success: rm -f o e
	 git rev-parse --verify "master@{May 26 2005 23:31:59}" >o 2>e &&
	 test 3cceb89b690679aecbe1db39079f99221f1aaaa6 = $(cat o) &&
	 test "warning: Log for 'master' only goes back to $ed." = "$(cat e)"
*   ok 23: Query "master@{May 26 2005 23:31:59}" (1 second before history)

* expecting success: rm -f o e
	 git rev-parse --verify "master@{May 26 2005 23:32:00}" >o 2>e &&
	 test 102939797ab91a4f201d131418d2c9d919dcdd2c = $(cat o) &&
	 test "" = "$(cat e)"
*   ok 24: Query "master@{May 26 2005 23:32:00}" (exactly history start)

* expecting success: rm -f o e
	 git rev-parse --verify "master@{2005-05-26 23:33:01}" >o 2>e &&
	 test 56d5c1374e8028a1e122ab046ab7b98165342dc4 = $(cat o) &&
	 test "warning: Log .git/logs/refs/heads/master has gap after Thu, 26 May 2005 18:33:00 -0500." = "$(cat e)"
*   ok 25: Query "master@{2005-05-26 23:33:01}" (middle of history with gap)

* expecting success: rm -f o e
	 git rev-parse --verify "master@{2005-05-26 23:38:00}" >o 2>e &&
	 test 0000000000000000000000000000000000000000 = $(cat o) &&
	 test "" = "$(cat e)"
*   ok 26: Query "master@{2005-05-26 23:38:00}" (middle of history)

* expecting success: rm -f o e
	 git rev-parse --verify "master@{2005-05-26 23:43:00}" >o 2>e &&
	 test a6166d2809963b1da1148e6922729c21214390c8 = $(cat o) &&
	 test "" = "$(cat e)"
*   ok 27: Query "master@{2005-05-26 23:43:00}" (exact end of history)

* expecting success: rm -f o e
	 git rev-parse --verify "master@{2005-05-28}" >o 2>e &&
	 test 26caa67a0d551891a2ecec76098a9f8e705ab059 = $(cat o) &&
	 test "warning: Log .git/logs/refs/heads/master unexpectedly ended on Thu, 26 May 2005 18:43:00 -0500." = "$(cat e)"
*   ok 28: Query "master@{2005-05-28}" (past end of history)

* expecting success: echo TEST >F &&
     git add F &&
	 GIT_AUTHOR_DATE="2005-05-26 23:30" \
	 GIT_COMMITTER_DATE="2005-05-26 23:30" git-commit -m add -a &&
	 h_TEST=$(git rev-parse --verify HEAD)
	 echo The other day this did not work. >M &&
	 echo And then Bob told me how to fix it. >>M &&
	 echo OTHER >F &&
	 GIT_AUTHOR_DATE="2005-05-26 23:41" \
	 GIT_COMMITTER_DATE="2005-05-26 23:41" git-commit -F M -a &&
	 h_OTHER=$(git rev-parse --verify HEAD) &&
	 GIT_AUTHOR_DATE="2005-05-26 23:44" \
	 GIT_COMMITTER_DATE="2005-05-26 23:44" git-commit --amend &&
	 h_FIXED=$(git rev-parse --verify HEAD) &&
	 echo Merged initial commit and a later commit. >M &&
	 echo $h_TEST >.git/MERGE_HEAD &&
	 GIT_AUTHOR_DATE="2005-05-26 23:45" \
	 GIT_COMMITTER_DATE="2005-05-26 23:45" git-commit -F M &&
	 h_MERGED=$(git rev-parse --verify HEAD) &&
	 rm -f M
Created initial commit 2bc82dd: add
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 F
Created commit d244b72: The other day this did not work.
 1 files changed, 1 insertions(+), 1 deletions(-)
Created commit ab0637f: The other day this did not work.
 1 files changed, 1 insertions(+), 1 deletions(-)
Created commit 4a78640: Merged initial commit and a later commit.
*   ok 29: creating initial files

* expecting success: diff expect .git/logs/refs/heads/master
*   ok 30: git-commit logged updates

* expecting success: test OTHER = $(git cat-file blob master:F)
*   ok 31: git cat-file blob master:F (expect OTHER)

* expecting success: test TEST = $(git cat-file blob "master@{2005-05-26 23:30}:F")
*   ok 32: git cat-file blob master@{2005-05-26 23:30}:F (expect TEST)

* expecting success: test OTHER = $(git cat-file blob "master@{2005-05-26 23:42}:F")
*   ok 33: git cat-file blob master@{2005-05-26 23:42}:F (expect OTHER)

* passed all 33 test(s)
*** t1410-reflog.sh ***
* expecting success: 
	mkdir -p A/B &&
	echo rat >C &&
	echo ox >A/D &&
	echo tiger >A/B/E &&
	git add . &&

	test_tick && git commit -m rabbit &&
	H=`git rev-parse --verify HEAD` &&
	A=`git rev-parse --verify HEAD:A` &&
	B=`git rev-parse --verify HEAD:A/B` &&
	C=`git rev-parse --verify HEAD:C` &&
	D=`git rev-parse --verify HEAD:A/D` &&
	E=`git rev-parse --verify HEAD:A/B/E` &&
	check_fsck &&

	chmod +x C &&
	( test "`git config --bool core.filemode`" != false ||
	  echo executable >>C ) &&
	git add C &&
	test_tick && git commit -m dragon &&
	L=`git rev-parse --verify HEAD` &&
	check_fsck &&

	rm -f C A/B/E &&
	echo snake >F &&
	echo horse >A/G &&
	git add F A/G &&
	test_tick && git commit -a -m sheep &&
	F=`git rev-parse --verify HEAD:F` &&
	G=`git rev-parse --verify HEAD:A/G` &&
	I=`git rev-parse --verify HEAD:A` &&
	J=`git rev-parse --verify HEAD` &&
	check_fsck &&

	rm -f A/G &&
	test_tick && git commit -a -m monkey &&
	K=`git rev-parse --verify HEAD` &&
	check_fsck &&

	check_have A B C D E F G H I J K L &&

	git prune &&

	check_have A B C D E F G H I J K L &&

	check_fsck &&

	loglen=$(wc -l <.git/logs/refs/heads/master) &&
	test $loglen = 4

Created initial commit 07fcc4f: rabbit
 3 files changed, 3 insertions(+), 0 deletions(-)
 create mode 100644 A/B/E
 create mode 100644 A/D
 create mode 100644 C
Created commit 7d1a0b8: dragon
 0 files changed, 0 insertions(+), 0 deletions(-)
 mode change 100644 => 100755 C
Created commit 15ab5f0: sheep
 4 files changed, 2 insertions(+), 2 deletions(-)
 delete mode 100644 A/B/E
 create mode 100644 A/G
 delete mode 100755 C
 create mode 100644 F
Created commit 3ac530f: monkey
 1 files changed, 0 insertions(+), 1 deletions(-)
 delete mode 100644 A/G
tree
tree
blob
blob
blob
blob
blob
commit
tree
commit
commit
commit
tree
tree
blob
blob
blob
blob
blob
commit
tree
commit
commit
commit
*   ok 1: setup

* expecting success: 
	test_tick && git reset --hard HEAD~2 &&
	test -f C &&
	test -f A/B/E &&
	! test -f F &&
	! test -f A/G &&

	check_have A B C D E F G H I J K L &&

	git prune &&

	check_have A B C D E F G H I J K L &&

	loglen=$(wc -l <.git/logs/refs/heads/master) &&
	test $loglen = 5

HEAD is now at 7d1a0b8... dragon
tree
tree
blob
blob
blob
blob
blob
commit
tree
commit
commit
commit
tree
tree
blob
blob
blob
blob
blob
commit
tree
commit
commit
commit
*   ok 2: rewind

* expecting success: 

	corrupt $F &&
	check_fsck "missing blob $F"


missing blob 9ae84adb2704cbd49549e52169b4043871e13432
*   ok 3: corrupt and check

* expecting success: 

	git reflog expire --dry-run \
		--expire=$(($test_tick - 10000)) \
		--expire-unreachable=$(($test_tick - 10000)) \
		--stale-fix \
		--all &&

	loglen=$(wc -l <.git/logs/refs/heads/master) &&
	test $loglen = 5 &&

	check_fsck "missing blob $F"

would prune commit: sheep
would prune commit: monkey
would prune reset --hard HEAD~2: updating HEAD
would prune commit: sheep
would prune commit: monkey
would prune reset --hard HEAD~2: updating HEAD
missing blob 9ae84adb2704cbd49549e52169b4043871e13432
*   ok 4: reflog expire --dry-run should not touch reflog

* expecting success: 

	git reflog expire --verbose \
		--expire=$(($test_tick - 10000)) \
		--expire-unreachable=$(($test_tick - 10000)) \
		--stale-fix \
		--all &&

	loglen=$(wc -l <.git/logs/refs/heads/master) &&
	test $loglen = 2 &&

	check_fsck "dangling commit $K"

Marking reachable objects...
keep commit (initial): rabbit
keep commit: dragon
prune commit: sheep
prune commit: monkey
prune reset --hard HEAD~2: updating HEAD
keep commit (initial): rabbit
keep commit: dragon
prune commit: sheep
prune commit: monkey
prune reset --hard HEAD~2: updating HEAD
dangling commit 3ac530f2f6c3a45206a6b2d455baf89d1c8f672d
*   ok 5: reflog expire

* expecting success: 

	git prune &&
	check_fsck &&

	check_have A B C D E H L &&
	check_dont_have F G I J K


tree
tree
blob
blob
blob
commit
commit
error: unable to find 9ae84adb2704cbd49549e52169b4043871e13432
fatal: git-cat-file 9ae84adb2704cbd49549e52169b4043871e13432: bad file
error: unable to find 41ca11d3340423c1922fe4110d2327bda0891b45
fatal: git-cat-file 41ca11d3340423c1922fe4110d2327bda0891b45: bad file
error: unable to find 1fe0f573dce6e694ce16e98a936c65db295d1948
fatal: git-cat-file 1fe0f573dce6e694ce16e98a936c65db295d1948: bad file
error: unable to find 15ab5f0ad4d9117a7cdcbea9673ec0fff6ca8e55
fatal: git-cat-file 15ab5f0ad4d9117a7cdcbea9673ec0fff6ca8e55: bad file
error: unable to find 3ac530f2f6c3a45206a6b2d455baf89d1c8f672d
fatal: git-cat-file 3ac530f2f6c3a45206a6b2d455baf89d1c8f672d: bad file
*   ok 6: prune and fsck

* expecting success: 

	recover $F &&
	check_fsck "dangling blob $F"


dangling blob 9ae84adb2704cbd49549e52169b4043871e13432
*   ok 7: recover and check

* expecting success: 

	before=$(git count-objects | sed "s/ .*//") &&
	BLOB=$(echo aleph | git hash-object -w --stdin) &&
	BLOB_FILE=.git/objects/$(echo $BLOB | sed "s/^../&\//") &&
	test $((1 + $before)) = $(git count-objects | sed "s/ .*//") &&
	test -f $BLOB_FILE &&
	git reset --hard &&
	git prune --expire=1.hour.ago &&
	test $((1 + $before)) = $(git count-objects | sed "s/ .*//") &&
	test -f $BLOB_FILE &&
	test-chmtime -86500 $BLOB_FILE &&
	git prune --expire 1.day &&
	test $before = $(git count-objects | sed "s/ .*//") &&
	! test -f $BLOB_FILE


HEAD is now at 7d1a0b8... dragon
*   ok 8: prune --expire

* passed all 8 test(s)
*** t1420-lost-found.sh ***
* expecting success: 
	git config core.logAllRefUpdates 0 &&
	: > file1 &&
	git add file1 &&
	test_tick &&
	git commit -m initial &&
	echo 1 > file1 &&
	echo 2 > file2 &&
	git add file1 file2 &&
	test_tick &&
	git commit -m second &&
	echo 3 > file3 &&
	git add file3

Created initial commit 9bb1ae9: initial
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 file1
Created commit 8ad33be: second
 2 files changed, 2 insertions(+), 0 deletions(-)
 create mode 100644 file2
*   ok 1: setup

* expecting success: 
	git rev-parse HEAD > lost-commit &&
	git rev-parse :file3 > lost-other &&
	test_tick &&
	git reset --hard HEAD^ &&
	git fsck --lost-found &&
	test 2 = $(ls .git/lost-found/*/* | wc -l) &&
	test -f .git/lost-found/commit/$(cat lost-commit) &&
	test -f .git/lost-found/other/$(cat lost-other)

HEAD is now at 9bb1ae9... initial
dangling blob 00750edc07d6415dcc07ae0351e9397b0222b7ba
dangling commit 8ad33beea8de8e15812274614acd0a26d73b60f8
*   ok 2: lost and found something

* passed all 2 test(s)
*** t1500-rev-parse.sh ***
* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 1: toplevel: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 2: toplevel: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 3: toplevel: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 4: toplevel: prefix

* expecting success: test 'true' = "$(git rev-parse --is-bare-repository)"
*   ok 5: .git/: is-bare-repository

* expecting success: test 'true' = "$(git rev-parse --is-inside-git-dir)"
*   ok 6: .git/: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 7: .git/: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 8: .git/: prefix

* expecting success: test 'true' = "$(git rev-parse --is-bare-repository)"
*   ok 9: .git/objects/: is-bare-repository

* expecting success: test 'true' = "$(git rev-parse --is-inside-git-dir)"
*   ok 10: .git/objects/: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 11: .git/objects/: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 12: .git/objects/: prefix

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 13: subdirectory: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 14: subdirectory: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 15: subdirectory: is-inside-work-tree

* expecting success: test 'sub/dir/' = "$(git rev-parse --show-prefix)"
*   ok 16: subdirectory: prefix

* expecting success: test 'true' = "$(git rev-parse --is-bare-repository)"
*   ok 17: core.bare = true: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 18: core.bare = true: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 19: core.bare = true: is-inside-work-tree

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 20: core.bare undefined: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 21: core.bare undefined: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 22: core.bare undefined: is-inside-work-tree

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 23: GIT_DIR=../.git, core.bare = false: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 24: GIT_DIR=../.git, core.bare = false: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 25: GIT_DIR=../.git, core.bare = false: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 26: GIT_DIR=../.git, core.bare = false: prefix

* expecting success: test 'true' = "$(git rev-parse --is-bare-repository)"
*   ok 27: GIT_DIR=../.git, core.bare = true: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 28: GIT_DIR=../.git, core.bare = true: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 29: GIT_DIR=../.git, core.bare = true: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 30: GIT_DIR=../.git, core.bare = true: prefix

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 31: GIT_DIR=../.git, core.bare undefined: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 32: GIT_DIR=../.git, core.bare undefined: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 33: GIT_DIR=../.git, core.bare undefined: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 34: GIT_DIR=../.git, core.bare undefined: prefix

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 35: GIT_DIR=../repo.git, core.bare = false: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 36: GIT_DIR=../repo.git, core.bare = false: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 37: GIT_DIR=../repo.git, core.bare = false: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 38: GIT_DIR=../repo.git, core.bare = false: prefix

* expecting success: test 'true' = "$(git rev-parse --is-bare-repository)"
*   ok 39: GIT_DIR=../repo.git, core.bare = true: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 40: GIT_DIR=../repo.git, core.bare = true: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 41: GIT_DIR=../repo.git, core.bare = true: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 42: GIT_DIR=../repo.git, core.bare = true: prefix

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 43: GIT_DIR=../repo.git, core.bare undefined: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 44: GIT_DIR=../repo.git, core.bare undefined: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 45: GIT_DIR=../repo.git, core.bare undefined: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 46: GIT_DIR=../repo.git, core.bare undefined: prefix

* passed all 46 test(s)
*** t1501-worktree.sh ***
* core.worktree = relative path
* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 1: outside: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 2: outside: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 3: outside: is-inside-work-tree

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 4: inside: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 5: inside: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 6: inside: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 7: inside: prefix

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 8: subdirectory: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 9: subdirectory: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 10: subdirectory: is-inside-work-tree

* expecting success: test 'sub/dir/' = "$(git rev-parse --show-prefix)"
*   ok 11: subdirectory: prefix

* core.worktree = absolute path
* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 12: outside: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 13: outside: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 14: outside: is-inside-work-tree

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 15: inside: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 16: inside: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 17: inside: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 18: inside: prefix

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 19: subdirectory: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 20: subdirectory: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 21: subdirectory: is-inside-work-tree

* expecting success: test 'sub/dir/' = "$(git rev-parse --show-prefix)"
*   ok 22: subdirectory: prefix

* GIT_WORK_TREE=relative path (override core.worktree)
* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 23: outside: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 24: outside: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 25: outside: is-inside-work-tree

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 26: inside: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 27: inside: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 28: inside: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 29: inside: prefix

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 30: subdirectory: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 31: subdirectory: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 32: subdirectory: is-inside-work-tree

* expecting success: test 'sub/dir/' = "$(git rev-parse --show-prefix)"
*   ok 33: subdirectory: prefix

* GIT_WORK_TREE=absolute path, work tree below git dir
* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 34: outside: is-bare-repository

* expecting success: test 'false' = "$(git rev-parse --is-inside-git-dir)"
*   ok 35: outside: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 36: outside: is-inside-work-tree

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 37: in repo.git: is-bare-repository

* expecting success: test 'true' = "$(git rev-parse --is-inside-git-dir)"
*   ok 38: in repo.git: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 39: in repo.git: is-inside-work-tree

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 40: in repo.git/objects: is-bare-repository

* expecting success: test 'true' = "$(git rev-parse --is-inside-git-dir)"
*   ok 41: in repo.git/objects: is-inside-git-dir

* expecting success: test 'false' = "$(git rev-parse --is-inside-work-tree)"
*   ok 42: in repo.git/objects: is-inside-work-tree

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 43: in repo.git/work: is-bare-repository

* expecting success: test 'true' = "$(git rev-parse --is-inside-git-dir)"
*   ok 44: in repo.git/work: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 45: in repo.git/work: is-inside-work-tree

* expecting success: test '' = "$(git rev-parse --show-prefix)"
*   ok 46: in repo.git/work: prefix

* expecting success: test 'false' = "$(git rev-parse --is-bare-repository)"
*   ok 47: in repo.git/sub/dir: is-bare-repository

* expecting success: test 'true' = "$(git rev-parse --is-inside-git-dir)"
*   ok 48: in repo.git/sub/dir: is-inside-git-dir

* expecting success: test 'true' = "$(git rev-parse --is-inside-work-tree)"
*   ok 49: in repo.git/sub/dir: is-inside-work-tree

* expecting success: test 'sub/dir/' = "$(git rev-parse --show-prefix)"
*   ok 50: in repo.git/sub/dir: prefix

* expecting success: 
	(cd repo.git &&
	 : > work/sub/dir/untracked &&
	 test sub/dir/untracked = "$(git ls-files --others)")

*   ok 51: repo finds its work tree

* expecting success: 
	(cd repo.git/work/sub/dir &&
	 : > tracked &&
	 git --git-dir=../../.. add tracked &&
	 cd ../../.. &&
	 test sub/dir/tracked = "$(git ls-files)")

*   ok 52: repo finds its work tree from work tree, too

* expecting success: 
	cd repo.git/work/sub/dir &&
	GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \
		git diff --exit-code tracked &&
	echo changed > tracked &&
	! GIT_DIR=../../.. GIT_WORK_TREE=../.. GIT_PAGER= \
		git diff --exit-code tracked

diff --git a/sub/dir/tracked b/sub/dir/tracked
index e69de29..5ea2ed4 100644
--- a/sub/dir/tracked
+++ b/sub/dir/tracked
@@ -0,0 +1 @@
+changed
*   ok 53: _gently() groks relative GIT_DIR & GIT_WORK_TREE

* passed all 53 test(s)
*** t2000-checkout-cache-clash.sh ***
* expecting success: git update-index --add path0 path1/file1
*   ok 1: git update-index --add various paths.

* expecting failure: git checkout-index -a
git-checkout-index: path0 already exists
fatal: cannot create directory at path1
*   ok 2: git checkout-index without -f should fail on conflicting work tree.

* expecting success: git checkout-index -f -a
*   ok 3: git checkout-index with -f should succeed.

* expecting success: test -f path0 && test -d path1 && test -f path1/file1
*   ok 4: git checkout-index conflicting paths.

* passed all 4 test(s)
*** t2001-checkout-cache-clash.sh ***
* expecting success: git update-index --add path0/file0
*   ok 1: git update-index --add path0/file0

* expecting success: tree1=$(git write-tree)
*   ok 2: writing tree out with git write-tree

* expecting success: git update-index --add path1/file1
*   ok 3: git update-index --add path1/file1

* expecting success: tree2=$(git write-tree)
*   ok 4: writing tree out with git write-tree

* expecting success: git read-tree -m $tree1 && git checkout-index -f -a
*   ok 5: read previously written tree and checkout.

* expecting success: git update-index --add path1
*   ok 6: git update-index --add a symlink.

* expecting success: tree3=$(git write-tree)
*   ok 7: writing tree out with git write-tree

* expecting success: git read-tree $tree2 && git checkout-index -f -a
*   ok 8: read previously written tree and checkout.

* expecting success: test ! -h path0 && test -d path0 &&
     test ! -h path1 && test -d path1 &&
     test ! -h path0/file0 && test -f path0/file0 &&
     test ! -h path1/file1 && test -f path1/file1
*   ok 9: checking out conflicting path with -f

* passed all 9 test(s)
*** t2002-checkout-cache-u.sh ***
* expecting success: 
echo frotz >path0 &&
git update-index --add path0 &&
t=$(git write-tree)
*   ok 1: preparation

* expecting failure: 
rm -f path0 &&
git read-tree $t &&
git checkout-index -f -a &&
git diff-files | diff - /dev/null
1d0
< :100644 100644 8e4020bb5a8d8c873b25de15933e75cc0fc275df 0000000000000000000000000000000000000000 M	path0
*   ok 2: without -u, git checkout-index smudges stat information.

* expecting success: 
rm -f path0 &&
git read-tree $t &&
git checkout-index -u -f -a &&
git diff-files | diff - /dev/null
*   ok 3: with -u, git checkout-index picks up stat information from new files.

* passed all 3 test(s)
*** t2003-checkout-cache-mkdir.sh ***
* expecting success: mkdir path1 &&
    echo frotz >path0 &&
    echo rezrov >path1/file1 &&
    git update-index --add path0 path1/file1
*   ok 1: setup

* expecting success: rm -fr path0 path1 &&
     mkdir path2 &&
     ln -s path2 path1 &&
     git checkout-index -f -a &&
     test ! -h path1 && test -d path1 &&
     test -f path1/file1 && test ! -f path2/file1
*   ok 2: have symlink in place where dir is expected.

* expecting success: rm -fr path0 path1 path2 &&
     mkdir path2 &&
     git checkout-index --prefix=path2/ -f -a &&
     test -f path2/path0 &&
     test -f path2/path1/file1 &&
     test ! -f path0 &&
     test ! -f path1/file1
*   ok 3: use --prefix=path2/

* expecting success: rm -fr path0 path1 path2 tmp* &&
     git checkout-index --prefix=tmp- -f -a &&
     test -f tmp-path0 &&
     test -f tmp-path1/file1 &&
     test ! -f path0 &&
     test ! -f path1/file1
*   ok 4: use --prefix=tmp-

* expecting success: rm -fr path0 path1 path2 tmp* &&
     echo nitfol >tmp-path1 &&
     mkdir tmp-path0 &&
     git checkout-index --prefix=tmp- -f -a &&
     test -f tmp-path0 &&
     test -f tmp-path1/file1 &&
     test ! -f path0 &&
     test ! -f path1/file1
*   ok 5: use --prefix=tmp- but with a conflicting file and dir

* expecting success: rm -fr path0 path1 path2 tmp* &&
     mkdir tmp1 tmp1/orary &&
     ln -s tmp1 tmp &&
     git checkout-index --prefix=tmp/orary/ -f -a &&
     test -d tmp1/orary &&
     test -f tmp1/orary/path0 &&
     test -f tmp1/orary/path1/file1 &&
     test -h tmp
*   ok 6: use --prefix=tmp/orary/ where tmp is a symlink

* expecting success: rm -fr path0 path1 path2 tmp* &&
     mkdir tmp1 &&
     ln -s tmp1 tmp &&
     git checkout-index --prefix=tmp/orary- -f -a &&
     test -f tmp1/orary-path0 &&
     test -f tmp1/orary-path1/file1 &&
     test -h tmp
*   ok 7: use --prefix=tmp/orary- where tmp is a symlink

* expecting success: rm -fr path0 path1 path2 tmp* &&
     mkdir tmp1 &&
     ln -s tmp1 tmp-path1 &&
     git checkout-index --prefix=tmp- -f -a &&
     test -f tmp-path0 &&
     test ! -h tmp-path1 &&
     test -d tmp-path1 &&
     test -f tmp-path1/file1
*   ok 8: use --prefix=tmp- where tmp-path1 is a symlink

* passed all 8 test(s)
*** t2004-checkout-cache-temp.sh ***
* expecting success: 
mkdir asubdir &&
echo tree1path0 >path0 &&
echo tree1path1 >path1 &&
echo tree1path3 >path3 &&
echo tree1path4 >path4 &&
echo tree1asubdir/path5 >asubdir/path5 &&
git update-index --add path0 path1 path3 path4 asubdir/path5 &&
t1=$(git write-tree) &&
rm -f path* .merge_* out .git/index &&
echo tree2path0 >path0 &&
echo tree2path1 >path1 &&
echo tree2path2 >path2 &&
echo tree2path4 >path4 &&
git update-index --add path0 path1 path2 path4 &&
t2=$(git write-tree) &&
rm -f path* .merge_* out .git/index &&
echo tree2path0 >path0 &&
echo tree3path1 >path1 &&
echo tree3path2 >path2 &&
echo tree3path3 >path3 &&
git update-index --add path0 path1 path2 path3 &&
t3=$(git write-tree)
*   ok 1: preparation

* expecting success: 
rm -f path* .merge_* out .git/index &&
git read-tree $t1 &&
git checkout-index --temp -- path1 >out &&
test $(wc -l <out) = 1 &&
test $(cut "-d	" -f2 out) = path1 &&
p=$(cut "-d	" -f1 out) &&
test -f $p &&
test $(cat $p) = tree1path1
*   ok 2: checkout one stage 0 to temporary file

* expecting success: 
rm -f path* .merge_* out .git/index &&
git read-tree $t1 &&
git checkout-index -a --temp >out &&
test $(wc -l <out) = 5 &&
for f in path0 path1 path3 path4 asubdir/path5
do
	test $(grep $f out | cut "-d	" -f2) = $f &&
	p=$(grep $f out | cut "-d	" -f1) &&
	test -f $p &&
	test $(cat $p) = tree1$f
done
*   ok 3: checkout all stage 0 to temporary files

* expecting success: 
rm -f path* .merge_* out .git/index &&
git read-tree -m $t1 $t2 $t3
*   ok 4: prepare 3-way merge

* expecting success: 
rm -f path* .merge_* out &&
git checkout-index --stage=2 --temp -- path1 >out &&
test $(wc -l <out) = 1 &&
test $(cut "-d	" -f2 out) = path1 &&
p=$(cut "-d	" -f1 out) &&
test -f $p &&
test $(cat $p) = tree2path1
*   ok 5: checkout one stage 2 to temporary file

* expecting success: 
rm -f path* .merge_* out &&
git checkout-index --all --stage=2 --temp >out &&
test $(wc -l <out) = 3 &&
for f in path1 path2 path4
do
	test $(grep $f out | cut "-d	" -f2) = $f &&
	p=$(grep $f out | cut "-d	" -f1) &&
	test -f $p &&
	test $(cat $p) = tree2$f
done
*   ok 6: checkout all stage 2 to temporary files

* expecting success: 
rm -f path* .merge_* out &&
git checkout-index --stage=all --temp -- path0 >out &&
test $(wc -l <out) = 0
git-checkout-index: path0 does not exist at stage 4
*   ok 7: checkout all stages/one file to nothing

* expecting success: 
rm -f path* .merge_* out &&
git checkout-index --stage=all --temp -- path1 >out &&
test $(wc -l <out) = 1 &&
test $(cut "-d	" -f2 out) = path1 &&
cut "-d	" -f1 out | (read s1 s2 s3 &&
test -f $s1 &&
test -f $s2 &&
test -f $s3 &&
test $(cat $s1) = tree1path1 &&
test $(cat $s2) = tree2path1 &&
test $(cat $s3) = tree3path1)
*   ok 8: checkout all stages/one file to temporary files

* expecting success: 
rm -f path* .merge_* out &&
git checkout-index --stage=all --temp -- path2 >out &&
test $(wc -l <out) = 1 &&
test $(cut "-d	" -f2 out) = path2 &&
cut "-d	" -f1 out | (read s1 s2 s3 &&
test $s1 = . &&
test -f $s2 &&
test -f $s3 &&
test $(cat $s2) = tree2path2 &&
test $(cat $s3) = tree3path2)
*   ok 9: checkout some stages/one file to temporary files

* expecting success: 
rm -f path* .merge_* out &&
git checkout-index -a --stage=all --temp >out &&
test $(wc -l <out) = 5
*   ok 10: checkout all stages/all files to temporary files

* expecting success: 
test x$(grep path0 out | cut "-d	" -f2) = x
*   ok 11: -- path0: no entry

* expecting success: 
test $(grep path1 out | cut "-d	" -f2) = path1 &&
grep path1 out | cut "-d	" -f1 | (read s1 s2 s3 &&
test -f $s1 &&
test -f $s2 &&
test -f $s3 &&
test $(cat $s1) = tree1path1 &&
test $(cat $s2) = tree2path1 &&
test $(cat $s3) = tree3path1)
*   ok 12: -- path1: all 3 stages

* expecting success: 
test $(grep path2 out | cut "-d	" -f2) = path2 &&
grep path2 out | cut "-d	" -f1 | (read s1 s2 s3 &&
test $s1 = . &&
test -f $s2 &&
test -f $s3 &&
test $(cat $s2) = tree2path2 &&
test $(cat $s3) = tree3path2)
*   ok 13: -- path2: no stage 1, have stage 2 and 3

* expecting success: 
test $(grep path3 out | cut "-d	" -f2) = path3 &&
grep path3 out | cut "-d	" -f1 | (read s1 s2 s3 &&
test -f $s1 &&
test $s2 = . &&
test -f $s3 &&
test $(cat $s1) = tree1path3 &&
test $(cat $s3) = tree3path3)
*   ok 14: -- path3: no stage 2, have stage 1 and 3

* expecting success: 
test $(grep path4 out | cut "-d	" -f2) = path4 &&
grep path4 out | cut "-d	" -f1 | (read s1 s2 s3 &&
test -f $s1 &&
test -f $s2 &&
test $s3 = . &&
test $(cat $s1) = tree1path4 &&
test $(cat $s2) = tree2path4)
*   ok 15: -- path4: no stage 3, have stage 1 and 3

* expecting success: 
test $(grep asubdir/path5 out | cut "-d	" -f2) = asubdir/path5 &&
grep asubdir/path5 out | cut "-d	" -f1 | (read s1 s2 s3 &&
test -f $s1 &&
test $s2 = . &&
test $s3 = . &&
test $(cat $s1) = tree1asubdir/path5)
*   ok 16: -- asubdir/path5: no stage 2 and 3 have stage 1

* expecting success: 
(cd asubdir &&
 git checkout-index -a --stage=all >out &&
 test $(wc -l <out) = 1 &&
 test $(grep path5 out | cut "-d	" -f2) = path5 &&
 grep path5 out | cut "-d	" -f1 | (read s1 s2 s3 &&
 test -f ../$s1 &&
 test $s2 = . &&
 test $s3 = . &&
 test $(cat ../$s1) = tree1asubdir/path5)
)
*   ok 17: checkout --temp within subdir

* expecting success: 
rm -f path* .merge_* out .git/index &&
ln -s b a &&
git update-index --add a &&
t4=$(git write-tree) &&
rm -f .git/index &&
git read-tree $t4 &&
git checkout-index --temp -a >out &&
test $(wc -l <out) = 1 &&
test $(cut "-d	" -f2 out) = a &&
p=$(cut "-d	" -f1 out) &&
test -f $p &&
test $(cat $p) = b
*   ok 18: checkout --temp symlink

* passed all 18 test(s)
*** t2005-checkout-index-symlinks.sh ***
* expecting success: 
git config core.symlinks false &&
l=$(echo -n file | git-hash-object -t blob -w --stdin) &&
echo "120000 $l	symlink" | git update-index --index-info
*   ok 1: preparation

* expecting success: 
git checkout-index symlink &&
test -f symlink
*   ok 2: the checked-out symlink must be a file

* expecting success: 
test "$(git-hash-object -t blob symlink)" = $l
*   ok 3: the file must be the blob we added during the setup

* passed all 3 test(s)
*** t2007-checkout-symlink.sh ***
* expecting success: 

	mkdir frotz &&
	echo hello >frotz/filfre &&
	git add frotz/filfre &&
	test_tick &&
	git commit -m "master has file frotz/filfre" &&

	git branch side &&

	echo goodbye >nitfol &&
	git add nitfol
	test_tick &&
	git commit -m "master adds file nitfol" &&

	git checkout side &&

	git rm --cached frotz/filfre &&
	mv frotz xyzzy &&
	ln -s xyzzy frotz &&
	git add xyzzy/filfre frotz &&
	test_tick &&
	git commit -m "side moves frotz/ to xyzzy/ and adds frotz->xyzzy/"


Created initial commit f92d3a8: master has file frotz/filfre
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 frotz/filfre
Created commit ed594a0: master adds file nitfol
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 nitfol
Switched to branch "side"
rm 'frotz/filfre'
Created commit 1502bd7: side moves frotz/ to xyzzy/ and adds frotz->xyzzy/
 2 files changed, 1 insertions(+), 0 deletions(-)
 create mode 120000 frotz
 rename {frotz => xyzzy}/filfre (100%)
*   ok 1: setup

* expecting success: 

	git checkout master


Switched to branch "master"
*   ok 2: switch from symlink to dir

Already on branch "master"
* expecting success: 

	git checkout side


Switched to branch "side"
*   ok 3: switch from dir to symlink

* passed all 3 test(s)
*** t2008-checkout-subdir.sh ***
* expecting success: 

	echo "base" > file0 &&
	git add file0 &&
	mkdir dir1 &&
	echo "hello" > dir1/file1 &&
	git add dir1/file1 &&
	mkdir dir2 &&
	echo "bonjour" > dir2/file2 &&
	git add dir2/file2 &&
	test_tick &&
	git commit -m "populate tree"


Created initial commit 15793b3: populate tree
 3 files changed, 3 insertions(+), 0 deletions(-)
 create mode 100644 dir1/file1
 create mode 100644 dir2/file2
 create mode 100644 file0
*   ok 1: setup

* expecting success: 

	(
		cd dir1 &&
		rm ../file0 &&
		git checkout HEAD -- ../file0 &&
		test "base" = "$(cat ../file0)" &&
		rm ../dir2/file2 &&
		git checkout HEAD -- ../dir2/file2 &&
		test "bonjour" = "$(cat ../dir2/file2)" &&
		rm ../file0 ./file1 &&
		git checkout HEAD -- .. &&
		test "base" = "$(cat ../file0)" &&
		test "hello" = "$(cat file1)"
	)


*   ok 2: remove and restore with relative path

* expecting success: 

	rm file0 &&
	git checkout HEAD -- file0 &&
	test "base" = "$(cat file0)"


*   ok 3: checkout with empty prefix

* expecting success: 

	rm dir1/file1 &&
	git checkout HEAD -- dir1 &&
	test "hello" = "$(cat dir1/file1)" &&
	rm dir1/file1 &&
	git checkout HEAD -- dir1/file1 &&
	test "hello" = "$(cat dir1/file1)"


*   ok 4: checkout with simple prefix

* expecting failure: git checkout HEAD -- ../../Makefile
fatal: '../../Makefile' is outside repository
fatal: '../../Makefile' is outside repository
*   ok 5: relative path outside tree should fail

* expecting failure: git checkout HEAD -- ../file0
fatal: '../file0' is outside repository
fatal: '../file0' is outside repository
*   ok 6: incorrect relative path to file should fail (1)

* expecting failure: ( cd dir1 && git checkout HEAD -- ./file0 )
error: pathspec 'dir1/file0' did not match any file(s) known to git.
Did you forget to 'git add'?
*   ok 7: incorrect relative path should fail (2)

* expecting failure: ( cd dir1 && git checkout HEAD -- ../../file0 )
fatal: '../../file0' is outside repository
fatal: '../../file0' is outside repository
*   ok 8: incorrect relative path should fail (3)

* passed all 8 test(s)
*** t2050-git-dir-relative.sh ***
* expecting success: 
mkdir -p .git/hooks &&
echo >.git/hooks/post-commit "#!/bin/sh
touch \"\${COMMIT_FILE}\"
echo Post commit hook was called." &&
chmod +x .git/hooks/post-commit
*   ok 1: Setting up post-commit hook

* expecting success: 
echo initial >top &&
git-add top
git-commit -m initial &&
test -r "${COMMIT_FILE}"

Post commit hook was called.
Created initial commit f084d63: initial
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 top
*   ok 2: post-commit hook used ordinarily

* expecting success: 
echo changed >top &&
git --git-dir subdir/.git add top &&
git --git-dir subdir/.git commit -m topcommit &&
test -r "${COMMIT_FILE}"

Post commit hook was called.
Created commit 66a00f3: topcommit
 1 files changed, 1 insertions(+), 1 deletions(-)
*   ok 3: post-commit-hook created and used from top dir

* expecting success: 
echo changed again >top
cd subdir &&
git --git-dir .git --work-tree .. add ../top &&
git --git-dir .git --work-tree .. commit -m subcommit &&
test -r "${COMMIT_FILE}"

Post commit hook was called.
Created commit 9130b92: subcommit
 1 files changed, 1 insertions(+), 1 deletions(-)
*   ok 4: post-commit-hook from sub dir

* passed all 4 test(s)
*** t2100-update-cache-badpath.sh ***
* expecting success: git update-index --add -- path0 path1 path2/file2 path3/file3
*   ok 1: git update-index --add to add various paths.

* expecting failure: git update-index --add -- path0/file0
error: 'path0/file0' appears as both a file and as a directory
error: path0/file0: cannot add to the index - missing --add option?
fatal: Unable to process path path0/file0
*   ok 2: git update-index to add conflicting path path0/file0 should fail.

* expecting failure: git update-index --add -- path1/file1
error: 'path1/file1' appears as both a file and as a directory
error: path1/file1: cannot add to the index - missing --add option?
fatal: Unable to process path path1/file1
*   ok 3: git update-index to add conflicting path path1/file1 should fail.

* expecting failure: git update-index --add -- path2
error: 'path2' appears as both a file and as a directory
error: path2: cannot add to the index - missing --add option?
fatal: Unable to process path path2
*   ok 4: git update-index to add conflicting path path2 should fail.

* expecting failure: git update-index --add -- path3
error: 'path3' appears as both a file and as a directory
error: path3: cannot add to the index - missing --add option?
fatal: Unable to process path path3
*   ok 5: git update-index to add conflicting path path3 should fail.

* passed all 5 test(s)
*** t2101-update-index-reupdate.sh ***
* expecting success: echo hello world >file1 &&
	 echo goodbye people >file2 &&
	 git update-index --add file1 file2 &&
	 git ls-files -s >current &&
	 cmp current expected
*   ok 1: update-index --add

* expecting success: rm -f file1 &&
	echo hello everybody >file2 &&
	if git update-index --again
	then
		echo should have refused to remove file1
		exit 1
	else
		echo happy - failed as expected
	fi &&
	 git ls-files -s >current &&
	 cmp current expected
error: file1: does not exist and --remove not passed
fatal: Unable to process path file1
happy - failed as expected
*   ok 2: update-index --again

* expecting success: git update-index --remove --again &&
	 git ls-files -s >current &&
	 cmp current expected
*   ok 3: update-index --remove --again

* expecting success: git-commit -m initial
Created initial commit 77d0fc4: initial
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 file2
*   ok 4: first commit

* expecting success: mkdir -p dir1 &&
	echo hello world >dir1/file3 &&
	echo goodbye people >file2 &&
	git update-index --add file2 dir1/file3 &&
	echo hello everybody >file2
	echo happy >dir1/file3 &&
	git update-index --again &&
	git ls-files -s >current &&
	cmp current expected
*   ok 5: update-index again

* expecting success: echo not so happy >file2 &&
	cd dir1 &&
	cat ../file2 >file3 &&
	git update-index --again &&
	cd .. &&
	git ls-files -s >current &&
	cmp current expected
*   ok 6: update-index --update from subdir

* expecting success: echo very happy >file2 &&
	cat file2 >dir1/file3 &&
	git update-index --again dir1/ &&
	git ls-files -s >current &&
	cmp current expected
*   ok 7: update-index --update with pathspec

* passed all 7 test(s)
*** t2102-update-index-symlinks.sh ***
* expecting success: 
git config core.symlinks false &&
l=$(echo -n file | git-hash-object -t blob -w --stdin) &&
echo "120000 $l	symlink" | git update-index --index-info
*   ok 1: preparation

* expecting success: 
echo -n new-file > symlink &&
git update-index symlink
*   ok 2: modify the symbolic link

* expecting success: 
case "`git ls-files --stage --cached symlink`" in
120000" "*symlink) echo ok;;
*) echo fail; git ls-files --stage --cached symlink; (exit 1);;
esac
ok
*   ok 3: the index entry must still be a symbolic link

* passed all 3 test(s)
*** t2200-add-update.sh ***
* expecting success: 
	echo initial >check &&
	echo initial >top &&
	echo initial >foo &&
	mkdir dir1 dir2 &&
	echo initial >dir1/sub1 &&
	echo initial >dir1/sub2 &&
	echo initial >dir2/sub3 &&
	git add check dir1 dir2 top foo &&
	test_tick
	git-commit -m initial &&

	echo changed >check &&
	echo changed >top &&
	echo changed >dir2/sub3 &&
	rm -f dir1/sub1 &&
	echo other >dir2/other

Created initial commit ec46c19: initial
 6 files changed, 6 insertions(+), 0 deletions(-)
 create mode 100644 check
 create mode 100644 dir1/sub1
 create mode 100644 dir1/sub2
 create mode 100644 dir2/sub3
 create mode 100644 foo
 create mode 100644 top
*   ok 1: setup

* expecting success: 
	git add -u dir1 dir2

*   ok 2: update

* expecting success: 
	test "$(git-ls-files dir1/sub1)" = ""

*   ok 3: update noticed a removal

* expecting success: 
	test "$(git-diff-files --name-status dir2/sub3)" = ""

*   ok 4: update touched correct path

* expecting success: 
	test "$(git-diff-files --name-status check)" = "M	check" &&
	test "$(git-diff-files --name-status top)" = "M	top"

*   ok 5: update did not touch other tracked files

* expecting success: 
	test "$(git-ls-files dir2/other)" = ""

*   ok 6: update did not touch untracked files

* expecting success: 

	git ls-files -s |
	sed -e "s/ 0	/	/" >expect &&
	git ls-tree -r $(git write-tree) |
	sed -e "s/ blob / /" >current &&
	diff -u expect current


*   ok 7: cache tree has not been corrupted

* expecting success: 
	(
		cd dir1 &&
		echo more >sub2 &&
		git add -u sub2
	)

*   ok 8: update from a subdirectory

* expecting success: 

	test "$(git diff-files --name-status dir1)" = ""


*   ok 9: change gets noticed

* expecting success: 

	rm foo &&
	ln -s top foo &&
	git add -u -- foo


*   ok 10: replace a file with a symlink

* expecting success: 

	git add -u &&
	test -z "$(git diff-files)"


*   ok 11: add everything changed

* expecting success: 

	touch check &&
	git add -u &&
	test -z "$(git diff-files)"


*   ok 12: touch and then add -u

* expecting success: 

	touch check &&
	git add check &&
	test -z "$(git diff-files)"


*   ok 13: touch and then add explicitly

* passed all 13 test(s)
*** t3000-ls-files-others.sh ***
* expecting success: git ls-files --others >output
*   ok 1: git ls-files --others to show output.

* expecting success: diff output expected1
*   ok 2: git ls-files --others should pick up symlinks.

* expecting success: git ls-files --others --directory >output
*   ok 3: git ls-files --others --directory to show output.

* expecting success: diff output expected2
*   ok 4: git ls-files --others --directory should not get confused.

* passed all 4 test(s)
*** t3001-ls-files-others-exclude.sh ***
* expecting success: git ls-files --others \
       --exclude=\*.6 \
       --exclude-per-directory=.gitignore \
       --exclude-from=.git/ignore \
       >output &&
     git diff expect output
*   ok 1: git ls-files --others with various exclude options.

* expecting success: git ls-files --others \
       --exclude=\*.6 \
       --exclude-per-directory=.gitignore \
       --exclude-from=.git/ignore \
       >output &&
     git diff expect output
*   ok 2: git ls-files --others with 
 line endings.

* expecting success: diff -u expect output
*   ok 3: git-status honours core.excludesfile

* passed all 3 test(s)
*** t3002-ls-files-dashpath.sh ***
* expecting success: echo frotz >path0 &&
	echo frotz >./-foo &&
	echo frotz >./--
*   ok 1: setup

* expecting success: git ls-files --others >output &&
     git diff output - <<EOF
--
-foo
output
path0
EOF

diff --git a/output b/-
index 7f0804d..0000000 100644
*   ok 2: git ls-files without path restriction.

* expecting success: git ls-files --others path0 >output &&
	git diff output - <<EOF
path0
EOF

diff --git a/output b/-
index 5ffcc7e..0000000 100644
*   ok 3: git ls-files with path restriction.

* expecting success: git ls-files --others -- path0 >output &&
	git diff output - <<EOF
path0
EOF

diff --git a/output b/-
index 5ffcc7e..0000000 100644
*   ok 4: git ls-files with path restriction with --.

* expecting success: git ls-files --others -- -- >output &&
	git diff output - <<EOF
--
EOF

diff --git a/output b/-
index 4ba2805..0000000 100644
*   ok 5: git ls-files with path restriction with -- --.

* expecting success: git ls-files --others -- >output &&
	git diff output - <<EOF
--
-foo
output
path0
EOF

diff --git a/output b/-
index 7f0804d..0000000 100644
*   ok 6: git ls-files with no path restriction.

* passed all 6 test(s)
*** t3010-ls-files-killed-modified.sh ***
* expecting success: git update-index --add -- path0 path1 path?/file? path7 path8 path9 path10
*   ok 1: git update-index --add to add various paths.

* expecting success: git ls-files -k >.output
*   ok 2: git ls-files -k to show killed files.

* expecting success: diff .output .expected
*   ok 3: validate git ls-files -k output.

* expecting success: git ls-files -m >.output
*   ok 4: git ls-files -m to show modified files.

* expecting success: diff .output .expected
*   ok 5: validate git ls-files -m output.

* passed all 5 test(s)
*** t3020-ls-files-error-unmatch.sh ***
Created initial commit 6f912a9: add foo bar
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 bar
 create mode 100644 foo
* expecting failure: git ls-files --error-unmatch foo bar-does-not-match
error: pathspec 'bar-does-not-match' did not match any file(s) known to git.
Did you forget to 'git add'?
foo
*   ok 1: git ls-files --error-unmatch should fail with unmatched path.

* expecting success: git ls-files --error-unmatch foo bar
bar
foo
*   ok 2: git ls-files --error-unmatch should succeed eith matched paths.

* passed all 2 test(s)
*** t3030-merge-recursive.sh ***
* expecting success: 

	echo hello >a &&
	o0=$(git hash-object a) &&
	cp a b &&
	cp a c &&
	mkdir d &&
	cp a d/e &&

	test_tick &&
	git add a b c d/e &&
	git commit -m initial &&
	c0=$(git rev-parse --verify HEAD) &&
	git branch side &&
	git branch df-1 &&
	git branch df-2 &&
	git branch df-3 &&
	git branch remove &&

	echo hello >>a &&
	cp a d/e &&
	o1=$(git hash-object a) &&

	git add a d/e &&

	test_tick &&
	git commit -m "master modifies a and d/e" &&
	c1=$(git rev-parse --verify HEAD) &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o1	a"
		echo "100644 blob $o0	b"
		echo "100644 blob $o0	c"
		echo "100644 blob $o1	d/e"
		echo "100644 $o1 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o1 0	d/e"
	) >expected &&
	git diff -u expected actual

Created initial commit 88eeecf: initial
 4 files changed, 4 insertions(+), 0 deletions(-)
 create mode 100644 a
 create mode 100644 b
 create mode 100644 c
 create mode 100644 d/e
Created commit b7f3e7f: master modifies a and d/e
 2 files changed, 2 insertions(+), 0 deletions(-)
*   ok 1: setup 1

* expecting success: 

	rm -rf [abcd] &&
	git checkout side &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o0	a"
		echo "100644 blob $o0	b"
		echo "100644 blob $o0	c"
		echo "100644 blob $o0	d/e"
		echo "100644 $o0 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o0 0	d/e"
	) >expected &&
	git diff -u expected actual &&

	echo goodbye >>a &&
	o2=$(git hash-object a) &&

	git add a &&

	test_tick &&
	git commit -m "side modifies a" &&
	c2=$(git rev-parse --verify HEAD) &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o2	a"
		echo "100644 blob $o0	b"
		echo "100644 blob $o0	c"
		echo "100644 blob $o0	d/e"
		echo "100644 $o2 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o0 0	d/e"
	) >expected &&
	git diff -u expected actual

D	b
D	c
Switched to branch "side"
Created commit 4419332: side modifies a
 1 files changed, 1 insertions(+), 0 deletions(-)
*   ok 2: setup 2

* expecting success: 

	rm -rf [abcd] &&
	git checkout df-1 &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o0	a"
		echo "100644 blob $o0	b"
		echo "100644 blob $o0	c"
		echo "100644 blob $o0	d/e"
		echo "100644 $o0 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o0 0	d/e"
	) >expected &&
	git diff -u expected actual &&

	rm -f b && mkdir b && echo df-1 >b/c && git add b/c &&
	o3=$(git hash-object b/c) &&

	test_tick &&
	git commit -m "df-1 makes b/c" &&
	c3=$(git rev-parse --verify HEAD) &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o0	a"
		echo "100644 blob $o3	b/c"
		echo "100644 blob $o0	c"
		echo "100644 blob $o0	d/e"
		echo "100644 $o0 0	a"
		echo "100644 $o3 0	b/c"
		echo "100644 $o0 0	c"
		echo "100644 $o0 0	d/e"
	) >expected &&
	git diff -u expected actual

D	b
D	c
D	d/e
Switched to branch "df-1"
Created commit 918ade1: df-1 makes b/c
 2 files changed, 1 insertions(+), 1 deletions(-)
 delete mode 100644 b
 create mode 100644 b/c
*   ok 3: setup 3

* expecting success: 

	rm -rf [abcd] &&
	git checkout df-2 &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o0	a"
		echo "100644 blob $o0	b"
		echo "100644 blob $o0	c"
		echo "100644 blob $o0	d/e"
		echo "100644 $o0 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o0 0	d/e"
	) >expected &&
	git diff -u expected actual &&

	rm -f a && mkdir a && echo df-2 >a/c && git add a/c &&
	o4=$(git hash-object a/c) &&

	test_tick &&
	git commit -m "df-2 makes a/c" &&
	c4=$(git rev-parse --verify HEAD) &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o4	a/c"
		echo "100644 blob $o0	b"
		echo "100644 blob $o0	c"
		echo "100644 blob $o0	d/e"
		echo "100644 $o4 0	a/c"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o0 0	d/e"
	) >expected &&
	git diff -u expected actual

D	a
D	c
D	d/e
Switched to branch "df-2"
Created commit 833bf24: df-2 makes a/c
 2 files changed, 1 insertions(+), 1 deletions(-)
 delete mode 100644 a
 create mode 100644 a/c
*   ok 4: setup 4

* expecting success: 

	rm -rf [abcd] &&
	git checkout remove &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o0	a"
		echo "100644 blob $o0	b"
		echo "100644 blob $o0	c"
		echo "100644 blob $o0	d/e"
		echo "100644 $o0 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o0 0	d/e"
	) >expected &&
	git diff -u expected actual &&

	rm -f b &&
	echo remove-conflict >a &&

	git add a &&
	git rm b &&
	o5=$(git hash-object a) &&

	test_tick &&
	git commit -m "remove removes b and modifies a" &&
	c5=$(git rev-parse --verify HEAD) &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o5	a"
		echo "100644 blob $o0	c"
		echo "100644 blob $o0	d/e"
		echo "100644 $o5 0	a"
		echo "100644 $o0 0	c"
		echo "100644 $o0 0	d/e"
	) >expected &&
	git diff -u expected actual


D	b
D	c
D	d/e
Switched to branch "remove"
rm 'b'
Created commit 968f3e1: remove removes b and modifies a
 2 files changed, 1 insertions(+), 2 deletions(-)
 delete mode 100644 b
*   ok 5: setup 5

* expecting success: 

	rm -rf [abcd] &&
	git checkout df-3 &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o0	a"
		echo "100644 blob $o0	b"
		echo "100644 blob $o0	c"
		echo "100644 blob $o0	d/e"
		echo "100644 $o0 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o0 0	d/e"
	) >expected &&
	git diff -u expected actual &&

	rm -fr d && echo df-3 >d && git add d &&
	o6=$(git hash-object d) &&

	test_tick &&
	git commit -m "df-3 makes d" &&
	c6=$(git rev-parse --verify HEAD) &&
	( git ls-tree -r HEAD ; git ls-files -s ) >actual &&
	(
		echo "100644 blob $o0	a"
		echo "100644 blob $o0	b"
		echo "100644 blob $o0	c"
		echo "100644 blob $o6	d"
		echo "100644 $o0 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o6 0	d"
	) >expected &&
	git diff -u expected actual

D	c
D	d/e
Switched to branch "df-3"
Created commit 9d284b3: df-3 makes d
 2 files changed, 1 insertions(+), 1 deletions(-)
 create mode 100644 d
 delete mode 100644 d/e
*   ok 6: setup 6

* expecting success: 

	rm -fr [abcd] &&
	git checkout -f "$c2" &&

	git-merge-recursive "$c0" -- "$c2" "$c1"
	status=$?
	case "$status" in
	1)
		: happy
		;;
	*)
		echo >&2 "why status $status!!!"
		false
		;;
	esac

Note: moving to "441933296d498d45ed4c5cbe9135259386a2e2b2" which isn't a local branch
If you want to create a new branch from this checkout, you may do so
(now or later) by using -b with the checkout command again. Example:
  git checkout -b <new_branch_name>
HEAD is now at 4419332... side modifies a
Merging 441933296d498d45ed4c5cbe9135259386a2e2b2 with b7f3e7f677ef7001dcb4b810583c9259a210141d
Merging:
4419332 side modifies a
b7f3e7f master modifies a and d/e
found 1 common ancestor(s):
88eeecf initial
Auto-merged a
CONFLICT (content): Merge conflict in a
*   ok 7: merge-recursive simple

* expecting success: 

	git ls-files -s >actual &&
	(
		echo "100644 $o0 1	a"
		echo "100644 $o2 2	a"
		echo "100644 $o1 3	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o1 0	d/e"
	) >expected &&
	git diff -u expected actual


*   ok 8: merge-recursive result

* expecting success: 

	rm -fr [abcd] &&
	git checkout -f "$c1" &&

	git-merge-recursive "$c0" -- "$c1" "$c5"
	status=$?
	case "$status" in
	1)
		: happy
		;;
	*)
		echo >&2 "why status $status!!!"
		false
		;;
	esac

HEAD is now at b7f3e7f... master modifies a and d/e
Merging b7f3e7f677ef7001dcb4b810583c9259a210141d with 968f3e182d39cc5676d733434b2b1fcade6d5fdb
Merging:
b7f3e7f master modifies a and d/e
968f3e1 remove removes b and modifies a
found 1 common ancestor(s):
88eeecf initial
Auto-merged a
CONFLICT (content): Merge conflict in a
Removed b
*   ok 9: merge-recursive remove conflict

* expecting success: 

	git ls-files -s >actual &&
	(
		echo "100644 $o0 1	a"
		echo "100644 $o1 2	a"
		echo "100644 $o5 3	a"
		echo "100644 $o0 0	c"
		echo "100644 $o1 0	d/e"
	) >expected &&
	git diff -u expected actual


*   ok 10: merge-recursive remove conflict

* expecting success: 
	rm -fr [abcd] &&
	git reset --hard &&
	git checkout -f "$c1" &&

	git-merge-recursive "$c0" -- "$c1" "$c3"

HEAD is now at b7f3e7f... master modifies a and d/e
HEAD is now at b7f3e7f... master modifies a and d/e
Merging b7f3e7f677ef7001dcb4b810583c9259a210141d with 918ade1d06dd1c0da47b644356c64b1b2122e705
Merging:
b7f3e7f master modifies a and d/e
918ade1 df-1 makes b/c
found 1 common ancestor(s):
88eeecf initial
Removed b
Added b/c
*   ok 11: merge-recursive d/f simple

* expecting success: 

	git ls-files -s >actual &&
	(
		echo "100644 $o1 0	a"
		echo "100644 $o3 0	b/c"
		echo "100644 $o0 0	c"
		echo "100644 $o1 0	d/e"
	) >expected &&
	git diff -u expected actual


*   ok 12: merge-recursive result

* expecting success: 

	rm -fr [abcd] &&
	git reset --hard &&
	git checkout -f "$c1" &&

	git-merge-recursive "$c0" -- "$c1" "$c4"
	status=$?
	case "$status" in
	1)
		: happy
		;;
	*)
		echo >&2 "why status $status!!!"
		false
		;;
	esac

HEAD is now at b7f3e7f... master modifies a and d/e
HEAD is now at b7f3e7f... master modifies a and d/e
error: failed to create path 'a/c': perhaps a D/F conflict?
Merging b7f3e7f677ef7001dcb4b810583c9259a210141d with 833bf240c9e2636a0e5eb3dd8f735d2a92181f22
Merging:
b7f3e7f master modifies a and d/e
833bf24 df-2 makes a/c
found 1 common ancestor(s):
88eeecf initial
CONFLICT (delete/modify): a deleted in 833bf240c9e2636a0e5eb3dd8f735d2a92181f22 and modified in b7f3e7f677ef7001dcb4b810583c9259a210141d. Version b7f3e7f677ef7001dcb4b810583c9259a210141d of a left in tree.
Added a/c
*   ok 13: merge-recursive d/f conflict

* expecting success: 

	git ls-files -s >actual &&
	(
		echo "100644 $o0 1	a"
		echo "100644 $o1 2	a"
		echo "100644 $o4 0	a/c"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o1 0	d/e"
	) >expected &&
	git diff -u expected actual


*   ok 14: merge-recursive d/f conflict result

* expecting success: 

	rm -fr [abcd] &&
	git reset --hard &&
	git checkout -f "$c4" &&

	git-merge-recursive "$c0" -- "$c4" "$c1"
	status=$?
	case "$status" in
	1)
		: happy
		;;
	*)
		echo >&2 "why status $status!!!"
		false
		;;
	esac

HEAD is now at b7f3e7f... master modifies a and d/e
HEAD is now at 833bf24... df-2 makes a/c
error: failed to create path 'a': perhaps a D/F conflict?
Merging 833bf240c9e2636a0e5eb3dd8f735d2a92181f22 with b7f3e7f677ef7001dcb4b810583c9259a210141d
Merging:
833bf24 df-2 makes a/c
b7f3e7f master modifies a and d/e
found 1 common ancestor(s):
88eeecf initial
CONFLICT (delete/modify): a deleted in 833bf240c9e2636a0e5eb3dd8f735d2a92181f22 and modified in b7f3e7f677ef7001dcb4b810583c9259a210141d. Version b7f3e7f677ef7001dcb4b810583c9259a210141d of a left in tree.
Added a/c
*   ok 15: merge-recursive d/f conflict the other way

* expecting success: 

	git ls-files -s >actual &&
	(
		echo "100644 $o0 1	a"
		echo "100644 $o1 3	a"
		echo "100644 $o4 0	a/c"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o1 0	d/e"
	) >expected &&
	git diff -u expected actual


*   ok 16: merge-recursive d/f conflict result the other way

* expecting success: 

	rm -fr [abcd] &&
	git reset --hard &&
	git checkout -f "$c1" &&

	git-merge-recursive "$c0" -- "$c1" "$c6"
	status=$?
	case "$status" in
	1)
		: happy
		;;
	*)
		echo >&2 "why status $status!!!"
		false
		;;
	esac

HEAD is now at 833bf24... df-2 makes a/c
HEAD is now at b7f3e7f... master modifies a and d/e
Merging b7f3e7f677ef7001dcb4b810583c9259a210141d with 9d284b3a95aea72df4581977e913e55da89d5e3d
Merging:
b7f3e7f master modifies a and d/e
9d284b3 df-3 makes d
found 1 common ancestor(s):
88eeecf initial
CONFLICT (directory/file): There is a directory with name d in b7f3e7f677ef7001dcb4b810583c9259a210141d. Added d as d~9d284b3a95aea72df4581977e913e55da89d5e3d
CONFLICT (delete/modify): d/e deleted in 9d284b3a95aea72df4581977e913e55da89d5e3d and modified in b7f3e7f677ef7001dcb4b810583c9259a210141d. Version b7f3e7f677ef7001dcb4b810583c9259a210141d of d/e left in tree.
*   ok 17: merge-recursive d/f conflict

* expecting success: 

	git ls-files -s >actual &&
	(
		echo "100644 $o1 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o6 3	d"
		echo "100644 $o0 1	d/e"
		echo "100644 $o1 2	d/e"
	) >expected &&
	git diff -u expected actual


*   ok 18: merge-recursive d/f conflict result

* expecting success: 

	rm -fr [abcd] &&
	git reset --hard &&
	git checkout -f "$c6" &&

	git-merge-recursive "$c0" -- "$c6" "$c1"
	status=$?
	case "$status" in
	1)
		: happy
		;;
	*)
		echo >&2 "why status $status!!!"
		false
		;;
	esac

HEAD is now at b7f3e7f... master modifies a and d/e
HEAD is now at 9d284b3... df-3 makes d
Merging 9d284b3a95aea72df4581977e913e55da89d5e3d with b7f3e7f677ef7001dcb4b810583c9259a210141d
Merging:
9d284b3 df-3 makes d
b7f3e7f master modifies a and d/e
found 1 common ancestor(s):
88eeecf initial
CONFLICT (file/directory): There is a directory with name d in b7f3e7f677ef7001dcb4b810583c9259a210141d. Added d as d~9d284b3a95aea72df4581977e913e55da89d5e3d_0
CONFLICT (delete/modify): d/e deleted in 9d284b3a95aea72df4581977e913e55da89d5e3d and modified in b7f3e7f677ef7001dcb4b810583c9259a210141d. Version b7f3e7f677ef7001dcb4b810583c9259a210141d of d/e left in tree.
*   ok 19: merge-recursive d/f conflict

* expecting success: 

	git ls-files -s >actual &&
	(
		echo "100644 $o1 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o6 2	d"
		echo "100644 $o0 1	d/e"
		echo "100644 $o1 3	d/e"
	) >expected &&
	git diff -u expected actual


*   ok 20: merge-recursive d/f conflict result

* expecting success: 

	git reset --hard "$c2" &&
	git read-tree -m "$c0" "$c2" "$c1"


HEAD is now at 4419332... side modifies a
*   ok 21: reset and 3-way merge

* expecting success: 

	git reset --hard master &&
	git read-tree --prefix=M/ master &&
	git ls-files -s >actual &&
	(
		echo "100644 $o1 0	M/a"
		echo "100644 $o0 0	M/b"
		echo "100644 $o0 0	M/c"
		echo "100644 $o1 0	M/d/e"
		echo "100644 $o1 0	a"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o1 0	d/e"
	) >expected &&
	git diff -u expected actual &&

	git read-tree --prefix=a1/ master &&
	git ls-files -s >actual &&
	(
		echo "100644 $o1 0	M/a"
		echo "100644 $o0 0	M/b"
		echo "100644 $o0 0	M/c"
		echo "100644 $o1 0	M/d/e"
		echo "100644 $o1 0	a"
		echo "100644 $o1 0	a1/a"
		echo "100644 $o0 0	a1/b"
		echo "100644 $o0 0	a1/c"
		echo "100644 $o1 0	a1/d/e"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o1 0	d/e"
	) >expected &&
	git diff -u expected actual

	git read-tree --prefix=z/ master &&
	git ls-files -s >actual &&
	(
		echo "100644 $o1 0	M/a"
		echo "100644 $o0 0	M/b"
		echo "100644 $o0 0	M/c"
		echo "100644 $o1 0	M/d/e"
		echo "100644 $o1 0	a"
		echo "100644 $o1 0	a1/a"
		echo "100644 $o0 0	a1/b"
		echo "100644 $o0 0	a1/c"
		echo "100644 $o1 0	a1/d/e"
		echo "100644 $o0 0	b"
		echo "100644 $o0 0	c"
		echo "100644 $o1 0	d/e"
		echo "100644 $o1 0	z/a"
		echo "100644 $o0 0	z/b"
		echo "100644 $o0 0	z/c"
		echo "100644 $o1 0	z/d/e"
	) >expected &&
	git diff -u expected actual


HEAD is now at b7f3e7f... master modifies a and d/e
*   ok 22: reset and bind merge

* passed all 22 test(s)
*** t3040-subprojects-basic.sh ***
* expecting success: : >Makefile &&
    git add Makefile &&
    git commit -m "Superproject created"
Created initial commit 435e286: Superproject created
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 Makefile
*   ok 1: Super project creation

* expecting success: mkdir sub1 &&
    ( cd sub1 && git init && : >Makefile && git add * &&
    git commit -q -m "subproject 1" ) &&
    mkdir sub2 &&
    ( cd sub2 && git init && : >Makefile && git add * &&
    git commit -q -m "subproject 2" ) &&
    git update-index --add sub1 &&
    git add sub2 &&
    git commit -q -m "subprojects added" &&
    git diff-tree --abbrev=5 HEAD^ HEAD |cut -d" " -f-3,5- >current &&
    git diff expected current
Initialized empty Git repository in .git/
Initialized empty Git repository in .git/
*   ok 2: create subprojects

* expecting success: git fsck --full
*   ok 3: check if fsck ignores the subprojects

* expecting success: ( cd sub1 &&
    echo "all:" >>Makefile &&
    echo "	true" >>Makefile &&
    git commit -q -a -m "make all" ) && {
        git diff-files --exit-code
	test $? = 1
    }
:160000 160000 32c96aee32ed1c9520ebfe903c164e09127d9a83 0000000000000000000000000000000000000000 M	sub1
*   ok 4: check if commit in a subproject detected

* expecting success: git commit -q -a -m "sub1 changed" && {
	git diff-tree --exit-code HEAD^ HEAD
	test $? = 1
    }
:160000 160000 32c96aee32ed1c9520ebfe903c164e09127d9a83 45cf2bb0e57cb1c9b1806407aac17981f64657fd M	sub1
*   ok 5: check if a changed subproject HEAD can be committed

* expecting success: git diff-index --exit-code --cached save -- sub1
    test $? = 1
:160000 160000 32c96aee32ed1c9520ebfe903c164e09127d9a83 45cf2bb0e57cb1c9b1806407aac17981f64657fd M	sub1
*   ok 6: check if diff-index works for subproject elements

* expecting success: git diff-tree --exit-code HEAD^ HEAD -- sub1
    test $? = 1
:160000 160000 32c96aee32ed1c9520ebfe903c164e09127d9a83 45cf2bb0e57cb1c9b1806407aac17981f64657fd M	sub1
*   ok 7: check if diff-tree works for subproject elements

* expecting success: git diff --exit-code HEAD^ HEAD
    test $? = 1
diff --git a/sub1 b/sub1
index 32c96ae..45cf2bb 160000
--- a/sub1
+++ b/sub1
@@ -1 +1 @@
-Subproject commit 32c96aee32ed1c9520ebfe903c164e09127d9a83
+Subproject commit 45cf2bb0e57cb1c9b1806407aac17981f64657fd
*   ok 8: check if git diff works for subproject elements

* expecting success: git ls-files -s >expected &&
    git clone -l -s . cloned &&
    ( cd cloned && git ls-files -s ) >current &&
    git diff expected current
Initialized empty Git repository in /build/buildd/git-core-1.5.4.3/t/trash/cloned/.git/
*   ok 9: check if clone works

* expecting success: git update-index --force-remove -- sub2 &&
    mv sub2 sub3 &&
    git add sub3 &&
    git commit -q -m "renaming a subproject" && {
	git diff -M --name-status --exit-code HEAD^ HEAD
	test $? = 1
    }
R100	sub2	sub3
*   ok 10: removing and adding subproject

* expecting success: git checkout save &&
    git diff-index --exit-code --raw --cached save -- sub1
M	sub1
Switched to branch "save"
*   ok 11: checkout in superproject

* passed all 11 test(s)
*** t3050-subprojects-fetch.sh ***
* expecting success: 
	test_tick &&
	mkdir -p sub && (
		cd sub &&
		git init &&
		>subfile &&
		git add subfile
		git commit -m "subproject commit #1"
	) &&
	>mainfile
	git add sub mainfile &&
	test_tick &&
	git commit -m "superproject commit #1"

Initialized empty Git repository in .git/
Created initial commit 4c0c877: subproject commit #1
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 subfile
Created initial commit 1226c2e: superproject commit #1
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 mainfile
 create mode 160000 sub
*   ok 1: setup

* expecting success: 
	git clone file://`pwd`/.git cloned &&
	(git rev-parse HEAD; git ls-files -s) >expected &&
	(
		cd cloned &&
		(git rev-parse HEAD; git ls-files -s) >../actual
	) &&
	diff -u expected actual

Initialized empty Git repository in /build/buildd/git-core-1.5.4.3/t/trash/cloned/.git/
*   ok 2: clone

* expecting success: 
	echo more >mainfile &&
	git update-index --force-remove sub &&
	mv sub/.git sub/.git-disabled &&
	git add sub/subfile mainfile &&
	mv sub/.git-disabled sub/.git &&
	test_tick &&
	git commit -m "superproject commit #2"

Created commit 1548ecd: superproject commit #2
 2 files changed, 1 insertions(+), 1 deletions(-)
 delete mode 160000 sub
 create mode 100644 sub/subfile
*   ok 3: advance

* expecting success: 
	(git rev-parse HEAD; git ls-files -s) >expected &&
	(
		cd cloned &&
		git pull &&
		(git rev-parse HEAD; git ls-files -s) >../actual
	) &&
	diff -u expected actual

remote: Counting objects: 6, done.
remote: Compressing objects:  50% (1/2)   
remote: Compressing objects: 100% (2/2)   
remote: Compressing objects: 100% (2/2), done.
remote: Total 4 (delta 0), reused 0 (delta 0)


More information about the ubuntu-autotest mailing list